Python 3.x 单值张量上的张量流映射 是否可以用一个值在张量上运行map_fn?

Python 3.x 单值张量上的张量流映射 是否可以用一个值在张量上运行map_fn?,python-3.x,tensorflow,Python 3.x,Tensorflow,以下工作: import tensorflow as tf a = tf.constant(1.0, shape=[3]) tf.map_fn(lambda x: x+1, a) #output: [2.0, 2.0, 2.0] 但是,这并不是: import tensorflow as tf b = tf.constant(1.0) tf.map_fn(lambda x: x+1, b) #expected output: 2.0 有可能吗 我做错了什么 任何提示都将不胜感激 不,这是

以下工作:

import tensorflow as tf
a = tf.constant(1.0, shape=[3])
tf.map_fn(lambda x: x+1, a)
#output: [2.0, 2.0, 2.0]
但是,这并不是:

import tensorflow as tf
b = tf.constant(1.0)
tf.map_fn(lambda x: x+1, b)
#expected output: 2.0
  • 有可能吗
  • 我做错了什么

任何提示都将不胜感激

不,这是不可能的。正如您可能看到的,它抛出了一个错误:

ValueError:元素必须是1+维张量,而不是标量

map\u fn
的要点是对张量的每个元素应用一个函数,因此对标量(单个元素)张量使用这个函数是没有意义的


至于“你做错了什么”:如果不知道你想达到什么目的,很难说出来。

好吧,我看到你接受了一个答案,它正确地指出,将函数应用于张量的元素,而标量张量没有元素。但对于标量张量来说,这并不是不可能的,你只需要在它之前和之后进行测试,就像下面的代码(测试):

将tensorflow导入为tf
b=tf.常数(1.0)
如果()==b.获取形状():
c=tf.reformate(tf.map_fn(λx:x+1,tf.reformate(b,(1,),())
其他:
c=tf.map_fn(λx:x+1,b)
#预期产出:2.0
使用tf.Session()作为sess:
打印(sess.run(c))
将输出:

2.0

如所愿


通过这种方式,您可以将其分解为一个不可知函数,该函数可以将标量张量和非标量张量作为参数。

谢谢!我在一个函数中使用map_fn,该函数以张量作为参数,其大小可能大于1。第二个问题只有在可能的情况下才提出,而我的回答是错误的。我会找到一个解决办法:)好的,在这种情况下,第二个答案应该提供所需的解决办法!