keras中的model_weights和optimizer_weights之间的区别 [英] Difference between model_weights and optimizer_weights in keras

查看:208
本文介绍了keras中的model_weights和optimizer_weights之间的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

keras中的model_weights和optimizer_weights有什么区别.运行以下代码后,model.summary显示总共9个参数,这些参数显示在1.h5文件中的model_weight中.但是optimizer_weight显示总共18个参数.我只用了1个纪元.代码如下:

What is difference between model_weights and optimizer_weights in keras. after running following code model.summary shows total 9 parameters, which shows in model_weight in 1.h5 file. But optimizer_weight shows total 18 parameters. I used only 1 epoch. Code is following:

from __future__ import print_function
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
import numpy as np
from sklearn.model_selection import train_test_split
import tensorflow as tf
batch_size = 128
num_classes = 2
epochs = 1

# input image dimensions
img_rows, img_cols = 28, 28
(x_train, y_train), (x_test, y_test) = mnist.load_data()

#Redistributing data for only two classes
x1_train=x_train[y_train==0]; y1_train=y_train[y_train==0]
x1_test=x_test[y_test==0];y1_test=y_test[y_test==0]
x2_train=x_train[y_train==1];y2_train=y_train[y_train==1]
x2_test=x_test[y_test==1];y2_test=y_test[y_test==1]
X=np.concatenate((x1_train,x2_train,x1_test,x2_test),axis=0)
Y=np.concatenate((y1_train,y2_train,y1_test,y2_test),axis=0)
# the data, shuffled and split between train and test sets
x_train, x_test, y_train, y_test = train_test_split(X,Y)

if K.image_data_format() == 'channels_first':
    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')

# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

model = Sequential()
model.add(Conv2D(1, kernel_size=(2, 2),
                 activation='relu',
                 input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(16,16)))
model.add(Flatten())
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adadelta(),
              metrics=['accuracy'])
model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,
          validation_data=(x_test, y_test))
model.summary()
model.save('1.h5')

推荐答案

模型权重是作用于实际数据的权重. 它们会影响输出.

Model weights are weights that act on the actual data. They will affect the output.

仅一个模型(没有优化器)就足以接受输入并产生(预测)输出.模型的权重越好,输出越好.

A model alone (without an optimizer) is enough to take an input and produce (predict) an output. The better the model's weights, the better the output.

训练模型的整个目的是调整其权重,以便可以做出良好的预测.

The whole purpose of training a model is to adjust its weights so it can make good predictions.

另一方面,优化器对数据和预测没有影响.
优化器的作用是决定如何在训练期间更改模型的权重.我纯粹是出于培训目的.优化器获取渐变并决定如何将这些渐变应用于模型. (考虑学习速度,动力等)

An optimizer, on the other hand, has no influence on data and predictions.
The role of the optimizer is decide how to change the model's weights during training. I purely for training purposes. The optimizer gets the gradients and decide how to apply these gradients to the model. (Considering learning rates, momentum, etc.)

优化器权重只是改善模型权重调整的辅助工具.一旦您认为模型做得很好,就可以放弃优化器.

The optimizer weights are just helpers to improve the adjustment of the model's weights. Once you consider that your model is doing a good job, you can throw the optimizer away.

这篇关于keras中的model_weights和optimizer_weights之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆