【发布时间】:2018-08-05 08:20:26
【问题描述】:
boolean_mask 的文档说掩码的形状必须是静态已知的。但是如果你这样做了
mask.set_shape([None])
tf.boolean_mask(tensor, mask)
它似乎工作正常。有什么理由不这样做吗?
【问题讨论】:
-
documentation 表示蒙版的维度必须是静态已知的,而不是整个形状。
-
如果我不使用 set_shape,我会收到以下错误:File "C:\Users\abc\Anaconda3\envs\tf\lib\site-packages\tensorflow\python\ops\array_ops .py”,第 1192 行,在 boolean_mask “必须指定掩码维度的数量,即使某些维度”ValueError:必须指定掩码维度的数量,即使某些维度是无。例如。 shape=[None] 可以,但 shape=None 不行。
-
shape=None表示形状完全未知,包括维数。shape=[None]表示形状是一维的,具有未知数量的元素。 -
所以tensorflow在建图的时候无法计算mask的形状,所以在确定mask会有一维的情况下,设置shape为[None]就可以了?跨度>
-
是的,没错!
标签: tensorflow shape mask