python - 修改 TensorFlow 神经网络连接

标签 python tensorflow neural-network

我使用 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/

相关文章:

machine-learning - 如何记录或查看使用 Dropout 训练 TensorFlow 神经网络时所用的成本?

python - 举例说明 : how embedding layers in keras works

python - 使用 dict 和 map 在 Dataframe 中创建新列只给出 NaN

python - 尝试自动文档包时出现导入错误

python - Pygame Sprite 不会移动但没有错误?

machine-learning - 为什么Tensorflow tf.learn分类结果相差很大?

python - 从networkX中的随机游走中获取节点列表

tensorflow - 为什么我们需要 tf.convert_to_tensor?

python - Tensorflow DNNRegressor 多输出

tensorflow - Tensorflow 或 Keras 中的离散权重和激活