我如何set_weights并在以后训练它们?

时间:2018-12-06 09:38:44

标签: python keras

我有一些特殊的过程来定义神经网络中神经元的权重,因此我需要使用layer.set_weights()来准备它们。

在此之后,我尝试直接运行model.evaluate()并成功运行。然后我尝试用

进行训练
model.fit(X_train, Y_train, epochs=5, verbose = 1)

但是它从准确性开始并保持不变,在训练过程中它没有变化,层都是Trainable:True

这是我的fit的输出,带有5个纪元,但与500个相同:

Epoch 1/5
460/460 [==============================] - 0s 54us/step - loss: 1.1919 - acc: 0.6196
Epoch 2/5
460/460 [==============================] - 0s 44us/step - loss: 1.1919 - acc: 0.6196
Epoch 3/5
460/460 [==============================] - 0s 43us/step - loss: 1.1919 - acc: 0.6196
Epoch 4/5
460/460 [==============================] - 0s 41us/step - loss: 1.1919 - acc: 0.6196
Epoch 5/5
460/460 [==============================] - 0s 34us/step - loss: 1.1918 - acc: 0.6196

所以我的问题是,如果我在致电set_weights()之前使用fit(),Keras是否会忽略它们?我希望他们不被忽视,我希望他们在训练中能够适应。我应该如何进行?

这是我定义图层的方式:

#this is the input tensor
inputs = Input(shape=(inputSize,), name='input')

#this is the Neurule layer (Layer 1)
x = Dense(neurulesQt, activation='sigmoid', name='neurules')(inputs)

# Layer 2 - with ORs
x = Dense(5, activation='sigmoid', name='layer2-ORs')(x)
# Layer 3 - with 2 ORs and 1 Buffer
y = Dense(2, activation='softmax', name='layer3-ORs_andOutput')(x)

然后设置从JSON加载的权重:

layer1 = model.layers[1]
layer2 = model.layers[2]
layer3 = model.layers[3]

layer1.set_weights(weightsAndBias1)
layer2.set_weights(weightsAndBias2)
layer3.set_weights(weightsAndBias3)

编辑:我尝试了更多的时期,它在大约600个时期之后开始改变,但是没有任何变化,直到那之前它都是平坦的。我应该如何更改优化器以加快此过程?

0 个答案:

没有答案