当前位置:  开发笔记 > 编程语言 > 正文

如何使用Keras手动更新权重

如何解决《如何使用Keras手动更新权重》经验,为你挑选了1个好方法。

我正在使用Keras构建LSTM,并通过使用外部成本函数进行梯度下降来对其进行调整。因此权重将更新为:

weights := weights + alpha* gradient(cost)

我知道我可以使用获得权重keras.getweights(),但是如何进行梯度下降并更新所有权重并相应地更新权重。我尝试使用initializer,但仍然没有弄清楚。我只找到了一些与tensorflow相关的代码,但我不知道如何将其转换为Keras。

任何帮助,提示或建议,将不胜感激!



1> apitsch..:

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文档的相应页面。

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有