具有不同形状的 Tensorflow 元组
Tensorflow tuples with different shapes
我有一个问题 returning 两个变量的元组 v
, wt
其中 v
有 shape=(20,20)
和 wt
有 shape=(1,)
。 wt
是一个变量,是一个权重值。我想 return map_fn
中的元组 (v,wt)
我的代码看起来有点接近这个
tf.map_fn(fn, nonzeros(Matrix, dim, row))
nonzeros(Matrix, dim, row) returns a (index, value)
fn
将 return 一个元组,但我得到的错误输出是:
ValueError: The two structures don't have the same number of elements. First
structure: <dtype: 'int64'>, second structure: (<tf.Tensor
'map_2/while/while/Exit_1:0' shape=(20,) dtype=float32>, <tf.Tensor
'map_2/while/Sub:0' shape=() dtype=int64>).
您将在此处返回 tf.while
循环的结果。 tf.while
循环 returns 多个值的元组,在您的情况下,我们可以看到您的 while 循环返回了一个感兴趣的值和一个计数器值作为元组。
(<tf.Tensor 'map_2/while/while/Exit_1:0' shape=(20,) dtype=float32>, <tf.Tensor 'map_2/while/Sub:0' shape=() dtype=int64>)
您要从 map_fn
返回的意思可能只是这两个值中的第一个。因此,在您未在此处显示的代码中,您应该具有以下内容:
value, counter = tf.while(...)
return value
你拥有的是:
return tf.while(...)
所以你看到的错误是抱怨 <dtype: 'int64'>
与你传入的 tuple
不匹配。当你修复 while 循环时,你将比较 <dtype: 'int64'>
到 <tf.Tensor 'map_2/while/while/Exit_1:0' shape=(20,) dtype=float32>
这大概是 (20,) 并且将匹配(尽管你最终可能会遇到 int/float 问题)。
我有一个问题 returning 两个变量的元组 v
, wt
其中 v
有 shape=(20,20)
和 wt
有 shape=(1,)
。 wt
是一个变量,是一个权重值。我想 return map_fn
我的代码看起来有点接近这个
tf.map_fn(fn, nonzeros(Matrix, dim, row))
nonzeros(Matrix, dim, row) returns a (index, value)
fn
将 return 一个元组,但我得到的错误输出是:
ValueError: The two structures don't have the same number of elements. First
structure: <dtype: 'int64'>, second structure: (<tf.Tensor
'map_2/while/while/Exit_1:0' shape=(20,) dtype=float32>, <tf.Tensor
'map_2/while/Sub:0' shape=() dtype=int64>).
您将在此处返回 tf.while
循环的结果。 tf.while
循环 returns 多个值的元组,在您的情况下,我们可以看到您的 while 循环返回了一个感兴趣的值和一个计数器值作为元组。
(<tf.Tensor 'map_2/while/while/Exit_1:0' shape=(20,) dtype=float32>, <tf.Tensor 'map_2/while/Sub:0' shape=() dtype=int64>)
您要从 map_fn
返回的意思可能只是这两个值中的第一个。因此,在您未在此处显示的代码中,您应该具有以下内容:
value, counter = tf.while(...)
return value
你拥有的是:
return tf.while(...)
所以你看到的错误是抱怨 <dtype: 'int64'>
与你传入的 tuple
不匹配。当你修复 while 循环时,你将比较 <dtype: 'int64'>
到 <tf.Tensor 'map_2/while/while/Exit_1:0' shape=(20,) dtype=float32>
这大概是 (20,) 并且将匹配(尽管你最终可能会遇到 int/float 问题)。