我使用 Python 3.X 和 TensorFlow 2.0 创建一个玩具神经网络模型,如下所示:
model = Sequential()
model.add(
Dense(
units = 2, activation = 'relu',
kernel_initializer = tf.keras.initializers.GlorotNormal(),
input_shape = (2,)
)
)
model.add(
Dense(
units = 2, activation = 'relu',
kernel_initializer = tf.keras.initializers.GlorotNormal()
)
)
model.add(
Dense(
units = 1, activation = 'sigmoid'
)
)
我现在想以分层方式修改模型的权重/偏差。我提出的用于更改模型随机初始化权重/偏差的连接的代码是,幅度小于 0.5 的连接应变为零,而其他连接应保持不变:
for layer in model.trainable_weights:
layer = tf.where(tf.less(layer, 0.5), 0, layer)
但是,这段代码并没有按照我想要的方式更改连接。我该怎么办?
谢谢!
最佳答案
您的代码只是创建具有所需值的新张量,并将它们放入Python变量层
中,但不会更改Tensorflow 你想要的变量。您需要使用 Variable
类的 assign
方法:
for layer in model.trainable_weights:
layer.assign(tf.where(tf.less(layer, 0.5), 0, layer))
关于python - 修改 TensorFlow 神经网络连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59773528/