Keras set_weights не изменяют прогнозы, изменяя веса непомерно - PullRequest
0 голосов
/ 26 апреля 2018

Я изменяю 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, это не меняет прогнозы вообще.Даже если я полностью изменю весовую матрицу.

...