Machine learning 图像像素是否可以存储在一维阵列中?

Machine learning 图像像素是否可以存储在一维阵列中?,machine-learning,image-processing,computer-vision,Machine Learning,Image Processing,Computer Vision,我正在训练一个机器学习模型,该模型将图像作为负责分类的输入,我将图像像素存储在数组中,但我在互联网上发现图像可以存储在二维数组中,下面是我的代码,如果它存储在一维格式上,那么它是如何在python中实现的,因为在一个索引中,只有一个值发生,那么如何实现呢(124124)存储在其中的图像 training_data=[] def create_training_data(): for category in Categories: path=os.path.join(Dat

我正在训练一个机器学习模型,该模型将图像作为负责分类的输入,我将图像像素存储在数组中,但我在互联网上发现图像可以存储在二维数组中,下面是我的代码,如果它存储在一维格式上,那么它是如何在python中实现的,因为在一个索引中,只有一个值发生,那么如何实现呢(124124)存储在其中的图像

training_data=[]
def create_training_data():
    for category in Categories:
        path=os.path.join(DataDir,category)
        IMG_SIZE=(124,124)
        for img in os.listdir(path):
            try:
                img_arr=cv2.imread(os.path.join(path,img),cv2.IMREAD_GRAYSCALE)
                new_array=cv2.resize(img_arr,(IMG_SIZE))
                training_data.append([new_array])

对于图像分类,通常最好把你的图像看作矩阵,因为它有助于保持本地邻居和连接信息的自然方式,而不需要使用完全连接的层或RNNs等。所以,我建议你不要把你的训练数据存储在列表中,而是使用所有的深度学习FRAM。eworks do:将它们存储在大小为
BxCxHxW
的张量中,其中
B
是批次大小,
C
是通道数,
H,W
是宽度/高度。例如:

#numpy
training_data=np.zeros([B,C,H,W])
#load a single image inside your loop
training_data[i,:,:,]=cv2.imread(...)
如果您选择PyTorch或TensorFlow等框架,您将能够使用它们自己的张量类型,这些张量类型可以轻松地传输到GPU(numpy阵列的情况并非如此)