我有一些特殊的过程来定义神经网络中神经元的权重,因此我需要使用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个时期之后开始改变,但是没有任何变化,直到那之前它都是平坦的。我应该如何更改优化器以加快此过程?