0
concat = tf.concat([query_rep, title_rep, cos_similarity], axis=1)
print(concat.shape[1].value)
# query_rep + title_rep + cos_similarity
hidden_size = concat.shape[1]
我发现我不能得到CONCAT形状,它将返回None
。我必须专门为hidden_size
赋值,例如hidden_size=201
。我怎样才能自动获取形状?
另外,对于我的CNN
网络,我想填充每批中的输入序列而不是整个数据集。所以我必须做出max_len
a placeholder
,但后来我发现placeholder
不能作为另一个placeholder
的参数。例如以下代码不起作用
self.max_len = tf.placeholder(int32)
self.query_holder = tf.placeholder(tf.int32, shape=[None, self.max_len])
该怎么做到的?
第二个解决方案看起来不错!谢谢,但第一个,'tf.shape(my_tensor)'仍然不能得到形状,并返回错误信息'ValueError异常:initial_value必须指定的形状:张量(“random_normal:0?”,形状=(?) ,dtype = float32)'并且不能使用这个形状创建一个新图层的参数'h_W = tf.Variable(tf.random_normal(shape = [hidden_size,hidden_size],stddev = 0.1),name ='h_W')' – danche
是的,这是正常的。当你创建一个变量时,必须在编译时知道该形状,所以如果该动态形状具有未知值(如你的那样),则不能使用另一个张量的动态形状作为新变量的形状。你必须事先知道'hidden_size',你通常会这样做,因为这是你的架构的设计选择。 – kaufmanu