当我指定tf.random_normal([1])
时,它工作得很好,但是当我指定tf.random_normal((1))
时,我得到
ValueError: Shape must be rank 1 but is rank 0 for 'random_normal_24/RandomStandardNormal' (op: 'RandomStandardNormal') with input shapes: [].
这种行为适用于许多需要在Tensorflow中输入形状的函数。在
这正常吗?还是虫子?许多教程和书籍都使用圆括号,但似乎方括号应该是基于行为的正确方式。在
在python中,具有单个元素的元组是标量。因此
(1) == 1
。在如果要显式地创建包含单个元素的元组,则必须使用语法:
(1,)
。在相反,在python中,可以使用方括号:
[1] != 1
创建一个包含单个元素的列表。在但是,在定义形状时,您应该更倾向于使用元组而不是列表,因为在python中,创建元组比创建数组更有效(tuple是一个不可变的对象,而list不是)。因此,python解释器可以进行很多优化,比如常量折叠和移动对象,而列表必须被复制)。在
这不是一个特定于TensorFlow的问题。在Python中,
(1)
与1
相同。您需要一个难看的语法(1,)
来指定一个元素元组。在相关问题 更多 >
编程相关推荐