我正在使用Keras构建LSTM,并通过使用外部成本函数进行梯度下降来对其进行调整。因此权重将更新为:
weights := weights + alpha* gradient(cost)
我知道我可以使用获得权重keras.getweights()
,但是如何进行梯度下降并更新所有权重并相应地更新权重。我尝试使用initializer
,但仍然没有弄清楚。我只找到了一些与tensorflow相关的代码,但我不知道如何将其转换为Keras。
任何帮助,提示或建议,将不胜感激!
keras.layer.set_weights()
您正在寻找的是:
import numpy as np from keras.layers import Dense from keras.models import Sequential model = Sequential() model.add(Dense(10, activation='relu', input_shape=(10,))) model.add(Dense(5, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='categorical_crossentropy') a = np.array(model.get_weights()) # save weights in a np.array of np.arrays model.set_weights(a + 1) # add 1 to all weights in the neural network b = np.array(model.get_weights()) # save weights a second time in a np.array of np.arrays print(b - a) # print changes in weights
在这里查看 keras文档的相应页面。