繁体   English   中英

一维CNN用于分类

[英]1D CNN for classification

我正在构建一个卷积神经网络(使用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)

当我运行上面的代码时,出现以下错误:

追溯(最近一次通话最近):文件“ minex.py”,第16行,正确= tf.nn.in_top_k(logits,y,1)文件“ /home/jk/tensorflow/local/lib/python2.7/ in-top_k中的site-packages / tensorflow / python / ops / gen_nn_ops.py“行1449中target = targets,k = k,name = name)文件” /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/在create_op set_shapes_for_outputs(ret)文件中的“ ops.py”行2329中,在第1717行中的“ /home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py”中set_shapes_for_outputs形状= shape_func(op)文件“ /home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py”,行1667,在call_with_requireing返回中call_cpp_shape_fn(op,require_shape_fn = True)文件“ /home/jk/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/common_shapes.py”,l ine 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(er (.message)ValueError:对于输入形状为[32,4,1] 、?的'InTopK'(op:'InTopK'),形状必须为等级2,但等级3。

基于该错误,似乎我的问题出在形状上,但是我不确定为什么会发生或如何纠正它。

您可以使用tf.squeezelogit中删除外部尺寸。

您的最后一行可能变为:

correct = tf.nn.in_top_k(tf.squeeze(logits), y, 1)

这将使对数张量的形状从[32,4,1]变为[32,4]。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM