模型火车起点
Posted
技术标签:
【中文标题】模型火车起点【英文标题】:Model Train Start Point 【发布时间】:2022-01-20 23:55:46 【问题描述】:我想在训练 cnn 之前设置一个起点。如何设置模型的起点?这是我的代码。另外我想知道每次重新训练模型时起点是否都会改变?非常感谢任何帮助。
model = Sequential()
model.add(layers.Embedding(vocab_size, embedding_dim, input_length=maxlen))
model.add(layers.Conv1D(16, 5, activation='tanh'))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(3, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model_path= "sentiment labelled sentences/imdb models/modelepoch:02d.hdf5"
check=ModelCheckpoint(model_path, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto',save_freq='epoch') #modeli her epoch sonunda kaydet
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
history = model.fit(X_train, y_train,
epochs=15,
validation_data=(X_test, y_test),
batch_size=10, callbacks=[check])
【问题讨论】:
设置起点是指固定权重的初始值吗? 是的,我也想知道每次运行模型时初始重量是否会发生变化 是的,它们每次都会改变,因为它们是用随机数初始化的。如果您想确保模型始终使用修复随机种子所需的相同初始权重,请参阅tf.random.set_seed
。否则,您可以使用常量值而不是随机值来初始化权重,请参阅tf.keras.initializers.Constant
。
【参考方案1】:
当你输入你的神经网络模型是Sequential()
,这意味着第一层是你的模型开始的地方(即model.add(layers.Embedding(vocab_size, embedding_dim, input_length=maxlen))
)
如果您想拥有不同的输入层,您可以重新排列代码行,或编写另一个代码。
如果您正在寻找调试或只是在您的神经网络中途开始执行,我认为这是不可能的。这是神经网络的一个问题。它们不是很容易解释/解释,这意味着它们就像一个黑匣子。您无法查看内部并检查对于特定数据点集,NN 是如何达到预测的。我发现这篇网站文章扩展了这个问题:https://www.altacognita.com/explainability-in-deep-neural-networks-2/
【讨论】:
感谢您的回答,我认为编辑输入层可以正常工作。但是我想知道如何编辑它,因为我没有设置特定的起点.. 根据您的目标对其进行编辑:您可以更改超参数(关键字 args)或完全为其提供不同的输入。 Conv1D 层也用于图像,而 Embedding 层更多地用于编码单词。您必须确保清楚组件层的作用以及您希望神经网络实现的目标。 我认为你没有清楚地理解我的问题。我不想改变我的模型架构。以上是关于模型火车起点的主要内容,如果未能解决你的问题,请参考以下文章