TensorFlow tf.reshape Fortran order like numpy

2024-05-23 16:14:36 发布

您现在位置:Python中文网/ 问答频道 /正文

TensorFlow是否提供了一种在Fortran(列主顺序)中重塑张量的方法?NumPy允许:

a = ...
np.reshape(a, (32, 32, 3), order='F')

我正在尝试将CIFAR图像重塑为32x32x3(从形状为3072x1的矢量中),但我得到的图像如下所示:

Example CIFAR image

在Numpy中使用Fortran order解决了这个问题,但是我需要在TensorFlow中执行同样的操作。在

编辑: 我现在意识到,我可以通过重塑3x32x32然后转换输出来获得正确的输出。我仍然有点惊讶,TF并没有提供开箱即用的重塑row major列major顺序。在


Tags: 方法图像numpy顺序tensorflow矢量nporder
1条回答
网友
1楼 · 发布于 2024-05-23 16:14:36

Tensorflow似乎不支持Fortran(列Major)排序,但有一个简单的解决方案。你必须结合整形和转置。下面的代码使用numpy显示紧跟Tensorflow版本的等效操作。在

纽比:

>>> import numpy as np
>>> want = np.arange(12).reshape((4,3),order='F')
>>> want
array([[ 0,  4,  8],
       [ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11]])
>>> have = np.arange(12).reshape((3,4))
>>> have
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> have.transpose()
array([[ 0,  4,  8],
       [ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11]])

Tensorflow:(假设您最后想要MxN)

^{pr2}$

相关问题 更多 >