我有以下代码:
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
提供形状。
答案 0 :(得分:0)
这个问题有很多事情发生。
首先,您无法在Tensor上调用int(),因为Tensor在session.run上下文之外没有值。
类似地,您无法解开形状未知的张量,因为无法确定解栈操作将具有多少个输出张量,因此解栈的结果将无法在图中使用。
如果您确实想执行此操作,我建议为您关心的每个批次大小构建一个单独的图形,并用零填充这些批次,以保持较小的图形数量。