对于任何Keras层(Layer类),可有人解释如何理解之间的区别input_shape,units,dim,等?
例如,doc说明了units指定图层的输出形状.
在神经网络的图像下面hidden layer1有4个单位.这是否直接转换为对象的units属性Layer?或者units在Keras中,隐藏层中每个权重的形状是否等于单位数?
我通过谷歌colab训练我的CNN(VGG)并生成.h5文件.现在的问题是,我可以通过谷歌colab成功预测我的输出,但是当我下载.h5训练模型文件并尝试预测我的笔记本电脑上的输出时,我在加载模型时遇到错误.
这是代码:
import tensorflow as tf
from tensorflow import keras
import h5py
# Initialization
loaded_model = keras.models.load_model('./train_personCount_model.h5')
Run Code Online (Sandbox Code Playgroud)
而错误:
ValueError: Unknown initializer: GlorotUniform
Run Code Online (Sandbox Code Playgroud) python machine-learning keras tensorflow google-colaboratory
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128,activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128,activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10,activation=tf.nn.softmax))
model.compile(optimizer ='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=3)
Run Code Online (Sandbox Code Playgroud)
当我试图保存模型时
model.save('epic_num_reader.model')
Run Code Online (Sandbox Code Playgroud)
我得到一个NotImplementedError:
NotImplementedError Traceback (most recent call last)
<ipython-input-4-99efa4bdc06e> in <module>()
1
----> 2 model.save('epic_num_reader.model')
NotImplementedError: Currently `save` requires model to be a graph network. Consider using `save_weights`, in order to save the weights of the model.
Run Code Online (Sandbox Code Playgroud)
那么如何保存代码中定义的模型呢?
当我运行 pickle.dump(model,open('modelDL.pkl','wb')) 时,我收到 TypeError: can't pickle weakref objects。
我创建了一个深度学习模型,我正在尝试保存它。下面是模型。
model = Sequential()
model.add( Dense(30,activation='relu') )
model.add( Dropout(0.5) )
model.add( Dense(20,activation='relu') )
model.add( Dropout(0.5) )
model.add( Dense(20,activation='relu') )
model.add( Dropout(0.5) )
model.add( Dense(1,activation='sigmoid') )
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud) classification python-3.x deep-learning tf.keras tensorflow2.0
如何在不从头开始重新训练的情况下更新/附加新数据到我的模型?我的数据集是图像,输出是预测情绪。
model.fit(x=train_image, y=train_label, epochs=1, batch_size=1)
Run Code Online (Sandbox Code Playgroud)
Model.fit 似乎没有附加我的新数据,而是覆盖模型。我的输出只有一个(我更新的最后一个)。
我已经搜索过这个,但效果不佳。
编辑1: 当我们丢失之前训练的数据时我们能做什么。简而言之,我们在训练完成后就丢失了训练数据,并且无法再次取回数据,我们必须保留的是从中完成的学习,并在收到新数据时重新训练模型。
ModelCheckPoint提供了分别保存val_Acc和的选项val_loss。我想以某种方式修改它,以便在val_acc改进时->保存模型。如果val_acc等于先前的最佳值,val_acc则检查val_loss,如果val_loss小于先前的最佳值,val_loss则保存模型。
if val_acc(epoch i)> best_val_acc:
save model
else if val_acc(epoch i) == best_val_acc:
if val_loss(epoch i) < best_val_loss:
save model
else
do not save model
Run Code Online (Sandbox Code Playgroud)