【问题标题】:Can we change kernel values manually of a trained model?我们可以手动更改训练模型的内核值吗?
【发布时间】:2019-12-16 12:03:34
【问题描述】:
我有一个训练有素的模型,我想将一些内核设置为零。通常我们通过使用 kernels = tf.trainable_variables() 获得这些内核权重,然后运行会话以找到这些权重的值。虽然它也给了我们偏差和全连接层的权重,但我对卷积核特别感兴趣。所以如果例如我在第一层有 96 个内核,我想将 Kernel# 04、25、26、48、90 设置为零,使其无法参与处理。它是怎么做的?请帮忙。
【问题讨论】:
标签:
python
tensorflow
conv-neural-network
【解决方案1】:
为了社区的利益,在此提及解决方案。
可以通过tf.assign方法执行。代码如下:
v1 = sess.graph.get_tensor_by_name('v1:0') #We should know the name of the Tensor
print(sess.run(v1)) # 1.0
sess.run(tf.assign(v1, 0))
print(sess.run(v1)) # 0.0