python - tensorflow.nn.conv1d 有渐变吗?
问题描述
我试着像这样get_gradient_function()
使用tensorflow.nn.conv1d
:
import tensorflow as tf
from tensorflow.python.framework.ops import get_gradient_function
d = tf.constant([1, 0, 2, 3, 0, 1, 1], dtype=tf.float32, name='d')
k = tf.constant([2, 1, 3], dtype=tf.float32, name='k')
data = tf.reshape(d, [1, int(d.shape[0]), 1], name='data')
kernel = tf.reshape(k, [int(k.shape[0]), 1, 1], name='kernel')
conv = tf.nn.conv1d(data, kernel, 1, 'SAME', name='conv')
with tf.Session() as sess:
print (sess.run(conv))
op = tf.get_default_graph().get_operation_by_name('conv')
print(get_gradient_function(op))
我在倒数第二行收到以下错误。
KeyError:“名称 'conv' 指的是不在图中的操作。”
解决方案
图中似乎没有'conv',您可以通过tf.get_default_graph().get_operaions()
如下所示打印所有操作
d
k
data/shape
data
kernel/shape
kernel
conv/ExpandDims/dim
conv/ExpandDims
conv/ExpandDims_1/dim
conv/ExpandDims_1
conv/Conv2D
conv/Squeeze
并conv.op.name
打印conv/Squeeze
。所以name=conv
只是给出外部名称。
这样,op = tf.get_default_graph().get_operation_by_name('conv/Squeeze')
将工作
推荐阅读
- node.js - 从 2 PassThrough Stream 创建一个双工流
- discord.js - 如何制作自动反应 discord.js
- html - 使用 CSS flex 居中对齐元素
- r - 使用 devtools 创建 R 包的操作顺序
- javascript - 如何创建一个类,该类具有一个方法,该方法将在不创建类实例的情况下推送值
- google-cloud-platform - 从在云运行中运行的管道访问云存储
- .htaccess - .htaccess CloudFlare 环境
- git-submodules - 影响子模块哈希的主仓库中的交互式变基
- python - 计算满足条件的滚动窗口上的唯一值
- pandas - 为什么熊猫数据框不需要完整的行值?