如何将形状提供给正在改变每次迭代的占位符

时间:2017-12-30 13:42:54

标签: python tensorflow

我有以下代码:

char_id

[current batch's vocab size * length of the biggest word in the current batch]张量的形状应为vocab size。由于我每次迭代都会使用不同批次的句子,因此length of biggest word in the batch以及None会有所不同。我无法对shape中的两个字段使用unstack,因为我稍后Cannot infer num from shape并收到错误word_max_len。我尝试将char_id作为另一个占位符提供,然后在word_max_len = tf.placeholder(dtype=tf.int32, shape=()) feed_dict = {char_id: char_id_batch, word_max_len: word_max_len_batch} sess.run(train_op, feed_dict=feed_dict) 中使用它,如下所示:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Tensor'

我收到错误:word_max_len

我不希望有一个大的固定char_id,比如100.我知道它解决了这个问题,但我想知道如何动态地为SELECT TOP 3 * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY TEMPA.ProductName) AS IndexNo, TEMPA.ProductName FROM ( SELECT DISTINCT ProductName FROM PRODUCTS ) AS TEMPA ) as TEMPB WHERE IndexNo between 3 and 5 提供形状。

1 个答案:

答案 0 :(得分:0)

这个问题有很多事情发生。

首先,您无法在Tensor上调用int(),因为Tensor在session.run上下文之外没有值。

类似地,您无法解开形状未知的张量,因为无法确定解栈操作将具有多少个输出张量,因此解栈的结果将无法在图中使用。

如果您确实想执行此操作,我建议为您关心的每个批次大小构建一个单独的图形,并用零填充这些批次,以保持较小的图形数量。