【发布时间】:2020-12-19 00:52:55
【问题描述】:
我正在创建一个自定义 TF 层,我需要在其中创建一个张量,其中包含类似的东西
class MyLayer(Layer):
def __init__(self, config, **kwargs):
super(MyLayer, self).__init__(**kwargs)
....
def call(self, x):
B, T, C = x.shape.as_list()
...
ones = tf.ones((B, T, C))
...
# output projection
y = ...
return y
现在问题是在评估层时B(批量大小)为 None,这导致 tf.ones 失败并出现以下错误:
ValueError: in user code:
<ipython-input-69-f3322a54c05c>:29 call *
ones = tf.ones((B, T, C))
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper **
return target(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/array_ops.py:3080 ones
shape = ops.convert_to_tensor(shape, dtype=dtypes.int32)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/profiler/trace.py:163 wrapped
return func(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py:1535 convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py:356 _tensor_shape_tensor_conversion_function
"Cannot convert a partially known TensorShape to a Tensor: %s" % s)
ValueError: Cannot convert a partially known TensorShape to a Tensor: (None, 8, 128)
我怎样才能让它工作?
【问题讨论】:
-
试试
ones = tf.ones(tf.shape(x).numpy())。如果它不起作用,还可以添加一个独立代码以更好地调试问题。 -
看起来很有趣,试试看!
标签: python tensorflow tensorflow2.0 keras-layer tf.keras