[英]Modifying TensorFlow Neural Network connections
我使用 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變量layer
,但不會如您所願地更改Tensorflow變量。 你需要使用Variable
類的assign
方法:
for layer in model.trainable_weights:
layer.assign(tf.where(tf.less(layer, 0.5), 0, layer))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.