Я изменяю weight_matrix, полученную при вызове layer.get_weights (), а затем использую set_weights (), меняю пару весов, и когда я снова вызываю get_weights (), он показывает веса, которые я изменил в set_weights.Тем не менее, это не меняет мои прогнозы на всех.Даже если я резко изменил их.
Кроме того, если я вызываю model.compile, а затем вызываю layer.set_weights, он говорит, что у объекта int нет атрибута set_weights
Я не совсем понимаю, что происходитнеправильно.
layer = 1
hiddenU = 16
val_dictionary = {}
model = keras.models.Sequential(name = 'LSTM')
model.add(keras.layers.LSTM(hiddenU, input_shape = xt.shape[1:], return_sequences = layer > 1))
model.add(Dense(2))
adam = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=1e-4)
model.compile(loss= lambda y, yp: (pinball(y, yp, 1)), optimizer = 'adam')
model.load_weights('Weights/LSTMGetWeights')
for layer in model.layers:
weights = layer.get_weights()
print(weights)
[array([[ 0.36053008, -0.25284126],
[ 0.37837738, -0.5382352 ],
[-0.05943123, 0.19144805],
[ 0.3131915 , 0.7109782 ],
[ 0.23572737, -0.11478594],
[ 0.10371532, 0.6173115 ],
[ 0.9760161 , 1.4972438 ],
[ 0.2379393 , -0.0071888 ],
[ 0.55228376, 0.46662283],
[ 1.2852958 , 0.475782 ],
[ 0.13585456, 0.5095823 ],
[-0.13454953, -0.7498165 ],
[ 0.00282927, -0.53929615],
[-0.21484761, 0.08239145],
[ 0.9378741 , 0.8509973 ],
[-0.46459877, 0.21304554]], dtype=float32), array([-0.01857078, 0.26882732], dtype=float32)]
layer.set_weights([np.array([[ 0.36053008, 23.023],
[ 0.37837738, -0.5382352 ],
[-0.05943123, 0.19144805],
[ 0.3131915 , 0.7109782 ],
[ 0.23572737, -0.11478594],
[ 0.10371532, 0.6173115 ],
[ 0.9760161 , 1.4972438 ],
[ 0.2379393 , -0.0071888 ],
[ 0.55228376, 0.46662283],
[ 1.2852958 , 0.475782 ],
[ 0.13585456, 0.5095823 ],
[-0.13454953, -0.7498165 ],
[ 0.00282927, -0.53929615],
[-0.21484761, 0.08239145],
[ 0.9378741 , 0.8509973 ],
[-0.46459877, 0.21304554]], dtype=np.float32), np.array([-0.01857078, 0.26882732], dtype=np.float32)])
Теперь, когда я вызываю layer.get_weights, он возвращает
[array([[ 3.6053008e-01, 2.3023001e+01],
[ 3.7837738e-01, -5.3823519e-01],
[-5.9431229e-02, 1.9144805e-01],
[ 3.1319150e-01, 7.1097821e-01],
[ 2.3572737e-01, -1.1478594e-01],
[ 1.0371532e-01, 6.1731148e-01],
[ 9.7601610e-01, 1.4972438e+00],
[ 2.3793930e-01, -7.1887998e-03],
[ 5.5228376e-01, 4.6662283e-01],
[ 1.2852958e+00, 4.7578201e-01],
[ 1.3585456e-01, 5.0958228e-01],
[-1.3454953e-01, -7.4981648e-01],
[ 2.8292700e-03, -5.3929615e-01],
[-2.1484761e-01, 8.2391448e-02],
[ 9.3787408e-01, 8.5099733e-01],
[-4.6459877e-01, 2.1304554e-01]], dtype=float32), array([-0.01857078, 0.26882732], dtype=float32)]
Обновленные веса.Однако когда я вызываю model.predict, это не меняет прогнозы вообще.Даже если я полностью изменю весовую матрицу.