Tensorflow Tensor reshape and pad with zeros

后端 未结 2 2052
死守一世寂寞
死守一世寂寞 2021-02-07 13:21

Is there a way to reshape a tensor and pad any overflow with zeros? I know ndarray.reshape does this, but as I understand it, converting a Tensor to an ndarray would require fli

2条回答
  •  走了就别回头了
    2021-02-07 14:11

    Tensorflow now offers the pad function which performs padding on a tensor in a number of ways(like opencv2's padding function for arrays): https://www.tensorflow.org/api_docs/python/tf/pad

    tf.pad(tensor, paddings, mode='CONSTANT', name=None)
    

    example from the docs above:

    # 't' is [[1, 2, 3], [4, 5, 6]].
    # 'paddings' is [[1, 1,], [2, 2]].
    # rank of 't' is 2.
    pad(t, paddings, "CONSTANT") ==> [[0, 0, 0, 0, 0, 0, 0],
                                      [0, 0, 1, 2, 3, 0, 0],
                                      [0, 0, 4, 5, 6, 0, 0],
                                      [0, 0, 0, 0, 0, 0, 0]]
    
    pad(t, paddings, "REFLECT") ==> [[6, 5, 4, 5, 6, 5, 4],
                                     [3, 2, 1, 2, 3, 2, 1],
                                     [6, 5, 4, 5, 6, 5, 4],
                                     [3, 2, 1, 2, 3, 2, 1]]
    
    pad(t, paddings, "SYMMETRIC") ==> [[2, 1, 1, 2, 3, 3, 2],
                                       [2, 1, 1, 2, 3, 3, 2],
                                       [5, 4, 4, 5, 6, 6, 5],
                                       [5, 4, 4, 5, 6, 6, 5]]
    

提交回复
热议问题