Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于分类的一维CNN_Python_Python 2.7_Tensorflow_Classification_Conv Neural Network - Fatal编程技术网

Python 用于分类的一维CNN

Python 用于分类的一维CNN,python,python-2.7,tensorflow,classification,conv-neural-network,Python,Python 2.7,Tensorflow,Classification,Conv Neural Network,我正在构建一个卷积神经网络(带有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 =

我正在构建一个卷积神经网络(带有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行,在 correct=tf.nn.in\u 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,name=name) 文件“/home/jk/tensorflow/local/lib/python2.7/site packages/tensorflow/python/framework/op_def_library.py”, 第763行,应用操作中 op_def=op_def) 文件“/home/jk/tensorflow/local/lib/python2.7/site packages/tensorflow/python/framework/ops.py”, 第2329行,在创建操作中 为输出设置形状(ret) 文件“/home/jk/tensorflow/local/lib/python2.7/site packages/tensorflow/python/framework/ops.py”, 第1717行,用于输出的集合形状 形状=形状函数(op) 文件“/home/jk/tensorflow/local/lib/python2.7/site packages/tensorflow/python/framework/ops.py”, 第1667行,与_通话 回传呼叫\u cpp\u shape\u fn(op,require\u shape\u fn=True) 文件“/home/jk/tensorflow/local/lib/python2.7/site packages/tensorflow/python/framework/common_shapes.py”, 第610行,在call_cpp_shape_fn中 调试\u python\u形状\u fn,需要\u形状\u fn) 文件“/home/jk/tensorflow/local/lib/python2.7/site packages/tensorflow/python/framework/common_shapes.py”, 第676行,在调用cpp形状fn impl中 提升值错误(错误消息) ValueError:对于输入形状为[32,4,1],?“InTopK”(op:'InTopK'),形状必须为秩2,但为秩3

根据错误,我的问题似乎是形状,但我不确定为什么会发生这种情况,或者如何更正它。

您可以使用从登录中删除外部尺寸

您的最后一行可能是:

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

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

其他一些参考资料可能会提到哪一种是更通用的解决方案,但在本例中,tf.squence更易于理解。其次,它的作用或多或少与tf.squence相反。