如何填充两个形状相同的Tensor,使它们具有相同的大小?我当前收到以下代码的错误(我不能在图形模式下使用for
循环):
def match_size(self, x, y):
d = tf.maximum(tf.subtract(y.shape, x.shape), 0)
x = tf.pad(x, [[0, i] for i in d])
d = tf.maximum(tf.subtract(x.shape, y.shape), 0)
y = tf.pad(y, [[0, i] for i in d])
return x, y
此代码将在Keras模型的call
方法中运行,因为x
和y
Tensor在不同执行阶段的特征大小(形状(batch, horizon, feature)
中的最后一个尺寸)不同(即,我无法在build
期间提前决定大小/形状)。
以下是预期的输入/输出示例:x = (10, 4, 4), y = (10, 4, 2)
~〉x = (10, 4, 4), y = (10, 4, 4)
x = (10, 4, 2), y = (10, 4, 4)
~〉x = (10, 4, 4), y = (10, 4, 4)
......它还应适用于所有维度:x = (10, 3, 2), y = (10, 4, 1)
~〉x = (10, 4, 2), y = (10, 4, 2)
1条答案
按热度按时间yiytaume1#
使用
ragged.stack
: