データが1つのディレクトリに保存されているX線画像分類に取り組んでおり、それをトレーニング、検証、およびテストセットに分割する必要があります。ImagedDataGenerator を使用してトレーニング セットと検証セットを分離することはできましたが、テスト セットを分離するのに問題があります。これが私のコードです。
import split
# Path
Images = 'data_processed_cropped_32'
data_set = os.path.join(r'C:\Users\320067835\Desktop\Thesis\Data\png', Images)
#split.ratio('data_processed_cropped_32', output="output", seed=1337, ratio=(0.8, 0.1,0.1))
# Image size
img_width = 32
img_height = 32
# Data augmentation
data_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale = 1/255, horizontal_flip = True,
rotation_range = 0,validation_split=0.2)
train_set = data_gen.flow_from_directory(data_set, target_size = (img_width, img_height), color_mode = 'grayscale',
class_mode = 'categorical', batch_size = 32, interpolation = 'nearest',
subset ='training')
validation_set = data_gen.flow_from_directory(data_set, target_size= (img_width,img_height), color_mode='grayscale',
batch_size=32, class_mode='categorical', interpolation= 'nearest',
subset='validation')
# Build a model
cnn = Sequential()
cnn.add(keras.Input(shape = (32,32,1)))
cnn.add(Conv2D(16,(3,3), padding = 'same', activation = 'relu', input_shape= (img_width,img_height,1)))
cnn.add(MaxPooling2D(2,2))
cnn.add(Conv2D(32,(3,3), padding = 'same',activation = 'relu', input_shape= (img_width, img_height,1)))
cnn.add(MaxPooling2D(2,2))
cnn.add(Flatten())
cnn.add(Dense(units = 100, activation = 'relu'))
cnn.add(Dense(units = 50, activation = 'relu'))
cnn.add(Dense(units=23, activation = 'softmax'))
cnn.summary()
cnn.compile(loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
cnn.fit(train_set,validation_data = validation_set,epochs = 20)
分割フォルダーの使用にうんざりしましたが、機能しませんでした。データを分割した後に3つのフォルダーにアクセスする方法がわからないため、ほとんどが正しく使用されていないと思います。または、テストセットを分割できる他の方法はありますか?