Python 为什么我的y_测试和y_训练存储为字符串?如何将它们转换为图像的数组表示?

Python 为什么我的y_测试和y_训练存储为字符串?如何将它们转换为图像的数组表示?,python,keras,conv-neural-network,tensorflow2.0,Python,Keras,Conv Neural Network,Tensorflow2.0,我要做的是执行图像分类,我有一个文件夹,其中包含图像形式的数据集。 想要创建一个二进制分类器。 项目结构如下所示: -Dataset - Images folder - Images.jpg - Meta Images folder - MetaImages.jpg - Notebook.ipynb 要加载数据的工件: data = [] labels = [] cur_path = os.getcwd() path = os.pa

我要做的是执行图像分类,我有一个文件夹,其中包含图像形式的数据集。 想要创建一个二进制分类器。 项目结构如下所示:

-Dataset
    - Images folder
         - Images.jpg
    - Meta Images folder 
         - MetaImages.jpg 
 - Notebook.ipynb
要加载数据的工件:

data = []
labels = []
cur_path = os.getcwd()


path = os.path.join(cur_path , r'Pothole_Image_Data')

images = os.listdir(path)
for i in images   :
   try  :
      image =  Image.open(path + '\\'  + i )
      image = image.resize((50,50))
      image = np.array(image)
      image = np.ones((50,50,3,1))
      data.append(image)
      labels.append(i)
   except : 
        print("Image not found")
    

   data = np.array(data)
   labels = np.array(labels)
   data = np.squeeze(data)
   print(data.shape)
   print(labels.shape)
下面是我分割数据的部分:

X_train, X_test , y_train , y_test  = train_test_split(data, labels ,test_size = 0.3, random_state  = 1 )
print(X_train.shape , y_train.shape , X_test.shape , y_test.shape)
X_train = X_train.astype(np.float64)
X_test  = X_test.astype(np.float64)
print(y_test)
print(y_train)
y_测试和y_序列的输出为我提供了字符串类型

(432, 50, 50, 3) (432,) (186, 50, 50, 3) (186,)
['381.jpg' '244.jpg' '300.jpg' '488.jpg' '12.jpg' '142.jpg' '312.jpg'
'233.jpg' '480.jpg' '583.jpg' '18.jpg' '110.jpg' '177.jpg' '16.jpg'
'208.jpg' '181.jpg' '77.jpg' '601.jpg' '535.jpg' '383.jpg' '363.jpg'
'346.jpg' '137.jpg' '232.jpg' '375.jpg' '72.jpg' '331.jpg' '499.jpg'
'86.jpg' '71.jpg' '418.jpg' '553.jpg' '153.jpg' '334.jpg' '518.jpg'
'1.jpg' '416.jpg' '52.jpg' '256.jpg' '358.jpg' '261.jpg' '280.jpg'
'159.jpg' '130.jpg' '267.jpg' '162.jpg' '377.jpg' '475.jpg' '423.jpg'
'246.jpg' '325.jpg' '396.jpg' '89.jpg' '595.jpg' '471.jpg' '546.jpg'
'391.jpg' '62.jpg' '519.jpg' '174.jpg' '557.jpg' '615.jpg' '95.jpg'
'221.jpg' '505.jpg' '144.jpg' '569.jpg' '191.jpg' '40.jpg' '493.jpg'
'465.jpg' '97.jpg' '243.jpg' '219.jpg' '83.jpg' '67.jpg' '333.jpg' ... ] 

您可以使用目录库中的tf.keras.preprocessing.image\u dataset\u读取图像,并将其拆分为训练和验证数据集。有关使用Tensorflow进行图像分类的更多详细信息,请参见。谢谢

path = os.path.join(cur_path , r'Pothole_Image_Data')
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
  path,
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)

val_ds = tf.keras.preprocessing.image_dataset_from_directory(
  path,
  validation_split=0.2,
  subset="validation",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)