训练模型时,出现错误,提示“无法将字符串转换为浮点”

2024-09-29 23:33:21 发布

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

我试图通过保存在一些目录中的图像来训练一个模型。我正在训练一个CNN,它将三种类型的皮肤癌进行分类。我为三个类制作了三个文件夹,并按类调整和恢复了这些文件夹上的图像。然后我读了这些文件夹里的图片,试图训练CNN

我的代码是

pathname = os.path.dirname(sys.argv[0])

train_melanoma_dir=r'{}\Melanoma_resize'.format(str(pathname))
train_sebborhic_dir= r'{}\Sebborhic_resize'.format(str(pathname))
train_nevus_dir=r'{}\Nevus_resize'.format(str(pathname))

train_melanoma=[r'C:\Users\renukasi\Documents\College_Research_Work\Skin_Cancer_Classification\Melanoma_resize\{}'.format(i) for i in os.listdir(train_melanoma_dir)]
train_sebborhic=[r'C:\Users\renukasi\Documents\College_Research_Work\Skin_Cancer_Classification\Sebborhic_resize\{}'.format(i) for i in os.listdir(train_sebborhic_dir)]
train_nevus=[r'C:\Users\renukasi\Documents\College_Research_Work\Skin_Cancer_Classification\Nevus_resize\{}'.format(i) for i in os.listdir(train_nevus_dir)]

train_melanoma_label =[]
train_sebborhic_label = []
train_nevus_label =[]
for i in range(0,len(train_melanoma)):
    train_melanoma_label.append(0)

for i in range(0,len(train_sebborhic)):
    train_sebborhic_label.append(1)

for i in range(0,len(train_nevus)):
    train_nevus_label.append(2)

train_images = []
train_images = train_melanoma+train_sebborhic+train_nevus
train_label=train_melanoma_label+train_sebborhic_label+train_nevus_label
X=[]    # list of shuffled train images
Y=[]    # list of shuffled_images labels
index_of_images=list(range(len(train_images)))
shuffle(index_of_images)
for i in index_of_images:
    X.append(train_images[i])
    Y.append(train_label[i])

final_train_images=X    
final_train_images=np.array(final_train_images)
Y=np.array(Y)

# Split the data into train and test set
from sklearn.model_selection import train_test_split

X_train,X_val,Y_train,Y_val=train_test_split(final_train_images,Y ,test_size=0.20)
batch_size=32
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255)          
val_datagen = ImageDataGenerator(rescale=1./255) # We do not augment 
validation data.We only perform rescale 

train_generator=train_datagen.flow(X_train,Y_train,batch_size=batch_size)
val_generator = val_datagen.flow(X_val,Y_val,batch_size=batch_size)

当我运行此代码时,出现以下错误-

Traceback (most recent call last):
File    "C:\Users\renukasi\Documents\College_Research_Work\\myModelwithvggstructure.py", line 100, in <module>
train_generator=train_datagen.flow(X_train,Y_train,batch_size=batch_size)
 File "C:\Program Files\Python36\lib\site-packages\keras_preprocessing\image\image_data_generator.py", line 430, in flow
subset=subset
 File "C:\Program Files\Python36\lib\site- 
 packages\keras_preprocessing\image\numpy_array_iterator.py", line 112, in __init__
self.x = np.asarray(x, dtype=self.dtype)
 File "C:\Program Files\Python36\lib\site-packages\numpy\core\numeric.py", line 538, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: 
'C:\\Users\\renukasi\\Documents\\College_Research_Work\\ Skin_Cancer_Classification\\Melanoma_resize\\Image329.jpg'
>>>  

有人能告诉我错误是什么吗


Tags: informatforsizedirbatchtrainval

热门问题