Python 轴不';pytorch中的t匹配数组

Python 轴不';pytorch中的t匹配数组,python,pytorch,torchvision,Python,Pytorch,Torchvision,我是pytorch的新手,我已经被困在这里一个多星期了。 我正在尝试使用AlexNet制造一辆“gta san Andreas”自动驾驶汽车,我在准备数据方面遇到了很多问题。 现在我得到了这个错误 Traceback (most recent call last): File "training_script.py", line 19, in <module> transformed_data = transform(all_data) File "C:\Users\

我是pytorch的新手,我已经被困在这里一个多星期了。 我正在尝试使用AlexNet制造一辆“gta san Andreas”自动驾驶汽车,我在准备数据方面遇到了很多问题。 现在我得到了这个错误

Traceback (most recent call last):
  File "training_script.py", line 19, in <module>
    transformed_data = transform(all_data)
  File "C:\Users\Mukhtar\Anaconda3\lib\site-packages\torchvision\transforms\transforms.py", line 49, in __call__
    img = t(img)
  File "C:\Users\Mukhtar\Anaconda3\lib\site-packages\torchvision\transforms\transforms.py", line 76, in __call__
    return F.to_tensor(pic)
  File "C:\Users\Mukhtar\Anaconda3\lib\site-packages\torchvision\transforms\functional.py", line 48, in to_tensor
    img = torch.from_numpy(pic.transpose((2, 0, 1)))
ValueError: axes don't match array
这就是我准备数据的方式

import cv2
from PIL import ImageGrab
import numpy as np
import time
from directKeys import PressKey,W,A,S,D
from getKeys import key_check
import os

def keys_to_output(keys):
    output = [0,0,0]

    if 'A' in keys:
        output[0] = 1
    elif 'D' in keys:
        output[2] = 1
    else:
        output[1] = 1
    return output

file_name = "training_data.npy"
if os.path.isfile(file_name):
   print("file exists , loading previous data!")
   training_data = list(np.load(file_name))
else:
   print("file does not exist , starting fresh")
   training_data = []   

last_time = time.time()


while True:


   kernel = np.ones((15 , 15) , np.float32)/225
   get_screen = ImageGrab.grab(bbox=(10,10,1280,720))
   screen_shot = np.array(get_screen)
   hsv = cv2.cvtColor(screen_shot , cv2.COLOR_BGR2HSV)
   lower_color = np.array([90 , 0 , 70])
   upper_color = np.array([100 , 100 ,  100])


   output = cv2.inRange(hsv , lower_color , upper_color)

   kernel = np.ones((1,20), np.uint8)  # note this is a horizontal kernel
   dilation = cv2.dilate(output, kernel, iterations=1)
   output = cv2.erode(dilation, kernel, iterations=1)   
   # output = cv2.Canny(output , threshold1 = 50 , threshold2 = 300)
   # output = cv2.GaussianBlur(output , (15,15) , 0)


   resized = cv2.resize(output , (640 , 480))

   print('loop took {} seconds'.format(time.time()-last_time))
   last_time = time.time()


   cv2.imshow('manipulated' , resized)
   screen_output = cv2.resize(output , (32 ,32))
   keys = key_check()
   Keys_output = keys_to_output(keys)
   training_data.append([screen_output,Keys_output])   

   if cv2.waitKey(1) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break   

   if len(training_data) % 500 == 0:
       print(len(training_data))
       np.save(file_name,training_data)   
我尝试了很多解决方案,但都不管用,但我觉得我错过了一些东西。
我有点不知所措,所以请帮我把转换应用到numpy数组列表,而不是单个PIL图像(这通常是
ToTensor()
transforms所期望的)。

@shai-Yup这就是问题所在,谢谢。 我将我的培训代码编辑为:

all_data = np.load('training_data.npy')
inputs= all_data[:,0]
labels= all_data[:,1]
inputs_tensors = torch.stack([torch.Tensor(i) for i in inputs])
labels_tensors = torch.stack([torch.Tensor(i) for i in labels])

data_set = torch.utils.data.TensorDataset(inputs_tensors,labels_tensors)
data_loader = torch.utils.data.DataLoader(data_set, batch_size=3,shuffle=True, num_workers=2)
all_data = np.load('training_data.npy')
inputs= all_data[:,0]
labels= all_data[:,1]
inputs_tensors = torch.stack([torch.Tensor(i) for i in inputs])
labels_tensors = torch.stack([torch.Tensor(i) for i in labels])

data_set = torch.utils.data.TensorDataset(inputs_tensors,labels_tensors)
data_loader = torch.utils.data.DataLoader(data_set, batch_size=3,shuffle=True, num_workers=2)