由于我不熟悉tensorflow,我不知道如何定义tf.PaddingFIFOQueue的形状以将元素设置为N * 1数组。我认为以下代码应该可以工作,但它产生错误......
你可以给我一个提示来调试吗?import tensorflow as tf
import numpy as np
a = tf.placeholder(dtype= tf.float32, shape = [None, 1])
b = tf.placeholder(dtype= tf.float32, shape = [None, 1])
ab_value = np.random.randn(5,1)
m = ab_value.reshape(-1, 1)
q_ab = tf.PaddingFIFOQueue(32, ['float32', 'float32'], shapes = [[None, 1], [None, 1]])
q_ab_en = q_ab.enqueue_many([a, b])
sess = tf.Session()
sess.run(q_ab_en, feed_dict = {a: ab_value, b: ab_value})
#a_dq, b_dq = q_ab.dequeue_many(1)
文件“C:\ Users \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ ops \ data_flow_ops.py”, 第375行,enqueue_many val.get_shape()[1:]。assert_is_compatible_with(形状)
文件“C:\ Users \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ framework \ tensor_shape.py”, 第756行,在assert_is_compatible_with中引发ValueError(“Shapes%s和 %s不兼容“%(self,other)) ValueError:形状(1,)和(?,1)不兼容
答案 0 :(得分:0)
是a和b单个元素还是多个元素?
enqueue_many等同于批量排队的enqueue调用。所以,如果你有a.shape = [5,1],则调用enqueue_many(a)相当于调用enqueue(a [0]),enqueue(a [1]),...,enqueue(a [-1])
如果这是预期的行为,您应该将队列的形状更改为: q_ab = tf.PaddingFIFOQueue(32,[' float32',' float32'],shapes = [[1],[1]])
如果a和b代表单个样本,则应使用enqueue而不是enqueue_many。