【问题标题】:Modifying TensorFlow Neural Network connections修改 TensorFlow 神经网络连接
【发布时间】:2020-05-03 12:36:41
【问题描述】:

我正在使用 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 neural-network


    【解决方案1】:

    您的代码只是创建具有所需值的新张量并将它们放入 Python 变量 layer,但不会根据需要更改 Tensorflow 变量到。你需要使用Variable类的assign方法:

    for layer in model.trainable_weights:
        layer.assign(tf.where(tf.less(layer, 0.5), 0, layer))
    

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 2014-10-01
      • 2018-11-05
      • 2018-04-21
      • 2018-10-27
      • 2020-10-29
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多