首页 > 解决方案 > ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)。在 CNN 网络的猫狗分类中发展

问题描述

使用此代码和以下功能:

def label_img(img):
    word_label=img.split('.')[-3]

    if word_label == 'cat': return[1,0]

    elif word_label =='dog':return[0,1]

2) 为训练创建数据的功能

def creat_train_data():

   training_data=[]

   for img in tqdm (os.listdir(Train_dir)):

       label= label_img(img)
       path=os.path.join(Train_dir,img)
       img=cv2.imread(path,cv2.IMREAD_GRAYSCALE), (-1,1)
       training_data.append([np.asarray(img),np.asarray(label)])


   shuffle(training_data)
   np.save('train_data.npy',training_data)

   return training_data


def process_test_data():

   testing_data=[]

   for img in tqdm (os.listdir(Test_dir)):

       path=os.path.join(Test_dir,img)
       img_num=img.split('.')[0]
       img=cv2.imread(path,cv2.IMREAD_GRAYSCALE),(-1,1)
       testing_data.append([np.asarray(img),np.asarray(img_num)])


   np.save('test_data.npy',testing_data)

   return testing_data



model=tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(filters=32,kernel_size=3,padding='same',activation='relu',input_shape=[50,50,3]))
model.compile(optimizer='adam',loss ='mean_squared_error',metrics=['mse'] )
model.fit(train_data,test_data,batch_size=100,epochs=5)

我收到以下错误:

ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)。

标签: machine-learningimage-processingdeep-learningcomputer-visionconv-neural-network

解决方案


推荐阅读