【发布时间】:2020-05-14 13:56:55
【问题描述】:
我正在使用 tensorflow 研究一维卷积。
代码:
import numpy as np
import tensorflow as tf
\#####raw data, input length is 24, and feature_len is 6
batch = np.ceil((np.random.rand(24, 6)*10))-5
\#####filter for convoltion, filter width is 3, filter input dim is 6, output dim is 18
eye_filter = tf.constant(np.eye(3*6).reshape(3,6,18).reshape(3,6,18))
\#####here error happened
conv = tf.nn.conv1d(input=batch, filters=eye_filter, stride=1, padding='SAME')
错误信息:
InvalidArgumentError Traceback(最近调用 最后的) /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/ops.py 在 _create_c_op(graph, node_def, inputs, control_inputs) 1606
尝试: -> 1607 c_op = c_api.TF_FinishOperation(op_desc) 1608 除了errors.InvalidArgumentError as e:InvalidArgumentError:形状必须为 4 级,但为 3 级 'conv1d_1' (op: 'Conv2D') 输入形状:[24,1,6], [1,3,6,18]。
在处理上述异常的过程中,又发生了一个异常:
ValueError Traceback(最近调用 最后)10帧 /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/ops.py 在 _create_c_op(graph, node_def, inputs, control_inputs) 1608
除了 errors.InvalidArgumentError as e: 1609 # 转换为 ValueError 用于向后兼容。 -> 1610 raise ValueError(str(e)) 1611 1612 return c_opValueError: Shape 必须是 4 级,但 'conv1d_1' 是 3 级(操作: 'Conv2D') 输入形状:[24,1,6], [1,3,6,18]。
当我将过滤器重设为 3 时,为什么过滤器等级为 4?
为什么我做 conv1d 的时候 op name 是 Conv2D?
如何查看以上两个张量(原始数据和过滤器)的卷积结果?
【问题讨论】: