如何解决在TensorFlow中相当于np.resize
我有一个1D数组x
,并希望以与np.resize相同的方式将其整形为所需的形状,即,如果x
中的元素过多,它们就是如果太少,则会循环添加,例如
x = np.array([1,2,3,4,5,6])
y = np.resize(x,shape=(2,2))
assert y == np.array([[1,2],[3,4]])
z = np.resize(x,shape=(3,3))
assert z == np.array([[1,3],[4,6],[1,3]])
我想知道如何仅使用TensorFlow中的张量运算符来实现它。
解决方法
我不确定这是否可以在TF中的单次操作中实现,但是可以使用crops或tf.tile
编写一个函数,然后重塑结果。
def tf_resize(t,shape):
"""
Args:
t: a `Tensor`
shape: requested output shape
"""
input_size = tf.size(t)
output_size = tf.reduce_prod(shape)
t_flatten = tf.reshape(t,[input_size])
result = tf.tile(t_flatten,[output_size // input_size + 1])
return tf.reshape(result[0:output_size],shape=shape)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。