model.weights是不可更改的变量类型,自定义的给层手动赋值绝非易事。直接上代码:
# 给第一隐藏层赋值为例
optimizer2 = tf.keras.optimizers.SGD(lr=1.0)
layer1 = model.layers[0]
# theta1是网络原本带的权重
theta2 = [1,1,1,2,85,54,41] # 自己定义的权重
optimizer2.apply_gradients(zip([theta1-theta2], layer1.trainable_variables))
2021/8/9日又发现了一种新的更好的操作:
参考官方API:tf.Variable
tf.Variable是只读类型,但是可以通过使用assign方法可以直接赋值、加、减。
v = tf.Variable(1.)
v.assign(2.)
v.assign_sub(0.5)
v.assign_add(0.5)