Python 对于同一组权重(Keras),神经网络损失显著变化

Python 对于同一组权重(Keras),神经网络损失显著变化,python,tensorflow,keras,deep-learning,neural-network,Python,Tensorflow,Keras,Deep Learning,Neural Network,我使用预先初始化的权重作为神经网络的初始权重,但每次训练模型时,损失值都会不断变化。如果初始权重相同,那么每次我训练模型时,模型应该预测完全相同的值。但mse在不断变化。有什么我遗漏的吗?设置预初始化值不会阻止训练 将图层.trainable属性设置为False: model = keras.Sequential([ layers.Dense(10, activation = 'relu', weights=[zero_weights, zero_bias]), layers.Dense(2

我使用预先初始化的权重作为神经网络的初始权重,但每次训练模型时,损失值都会不断变化。如果初始权重相同,那么每次我训练模型时,模型应该预测完全相同的值。但mse在不断变化。有什么我遗漏的吗?

设置预初始化值不会阻止训练

将图层
.trainable
属性设置为False:

model = keras.Sequential([
layers.Dense(10, activation = 'relu', weights=[zero_weights, zero_bias]),  
layers.Dense(24, activation = 'relu', weights=[one_weights, one_bias]),
layers.Dense(12, activation = 'relu', weights=[two_weights, two_bias]),
layers.Dense(1, weights=[three_weights, three_bias])])
# Compile Model
model.compile(loss='mse',
            optimizer=keras.optimizers.Adam(learning_rate=0.1),
            metrics=['mse'])
model.fit(inputs, targets,
          batch_size=5,
          epochs=100)
prediction_test = model.predict(X_test)
mse=mean_squared_error(prediction_test,y_test)
print(mse)

您已将所有层初始化为某些权重(可能是从上一次培训课程中获得的权重),但每次启动培训过程时,您传递给它进行培训的数据将以不同的方式进行洗牌,因为model.fit()api默认情况下已将洗牌参数设置为True。如果将其设置为False,则在后续运行期间,如果训练数据相同,则不会看到模型权重得到更新

model.layers[0].trainable = False

但是我想在训练时改变重量。我只是用我拥有的权重初始化权重。如果初始权重相同,那么每次训练模型时损失函数都应该相同。我添加了shuffle函数,但代码仍然不起作用。我所犯的错误是,作为权重传递给其中一层的数组的形状不是应该使用的形状。将形状从(12,1)更改为(12,)。现在它正在工作。
model.fit(inputs, targets,
          batch_size=5,
          epochs=100, shuffle=False)