【发布时间】:2018-02-02 10:49:14
【问题描述】:
我正在构建一个卷积神经网络(使用 Tensorflow),它应该对一维输入进行分类。
到目前为止,这是我的代码:
import tensorflow as tf
n_outputs = 1
batch_size = 32
x = tf.placeholder(tf.float32, [batch_size, 10, 1])
filt = tf.zeros([3, 1, 1])
output = tf.nn.conv1d(x, filt, stride=2, padding="VALID")
y = tf.placeholder(tf.int32)
logits = tf.layers.dense(output, n_outputs)
xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)
correct = tf.nn.in_top_k(logits, y, 1)
当我运行上面的代码时,我得到以下错误:
Traceback(最近一次调用最后一次): 文件“minex.py”,第 16 行,在 正确 = tf.nn.in_top_k(logits, y, 1) 文件“/home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_nn_ops.py”, 第 1449 行,在 in_top_k 中 目标=目标,k=k,名称=名称) 文件“/home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py”, 第 763 行,在 apply_op 中 op_def=op_def) 文件“/home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py”, 第 2329 行,在 create_op 中 set_shapes_for_outputs(ret) 文件“/home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py”, 第 1717 行,在 set_shapes_for_outputs 中 形状 = shape_func(op) 文件“/home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py”, 第 1667 行,在 call_with_requiring 中 返回 call_cpp_shape_fn(op, require_shape_fn=True) 文件“/home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/common_shapes.py”, 第 610 行,在 call_cpp_shape_fn 中 debug_python_shape_fn, require_shape_fn) 文件“/home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/common_shapes.py”, 第 676 行,在 _call_cpp_shape_fn_impl 引发 ValueError(err.message) ValueError:形状必须为 2 级,但对于输入形状为 [32,4,1], 的“InTopK”(操作:“InTopK”)为 3 级。
根据错误,我的问题似乎与形状有关,但我不确定为什么会发生或如何纠正它。
【问题讨论】:
标签: python python-2.7 tensorflow classification conv-neural-network