【问题标题】: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/model{epoch: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

标签: python tensorflow keras deep-learning conv-neural-network


【解决方案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 层更多地用于编码单词。您必须确保清楚组件层的作用以及您希望神经网络实现的目标。
  • 我认为你没有清楚地理解我的问题。我不想改变我的模型架构。
猜你喜欢
  • 2021-05-23
  • 2018-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多