Другая причина.
Вот мой код:
import numpy as np
from keras_preprocessing.image import ImageDataGenerator
from resnet3d import Resnet3DBuilder
import keras
data_path_l='.\TRAIN\left\'
data_path_r='.\TRAIN\right\'
test_data_path_l ='.\TEST\left\'
test_data_path_r='.\TEST\right\'
num_classes=2239
batch_size=32
epochs=500
train_images=17912
val_images=4478
input_imgen = ImageDataGenerator()
def generate_generator_multiple(generator,dir1, dir2, batch_size):
genX1 = generator.flow_from_directory(directory=dir1,target_size=(224,224)
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False)
genX2 = generator.flow_from_directory(directory=dir2,target_size=(224,224),
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False)
while True:
X1i = genX1.next()
X2i = genX2.next()
Xsum = np.concatenate((X1i[0],X2i[0]), axis=3)
Xsum = np.expand_dims(Xsum, axis=1)
Xsum=np.swapaxes(Xsum,4,1)
yield Xsum, X2i[1] #Yield both images and their mutual label
def validation_generate_generator_multiple(generator,dir1, dir2, batch_size):
val_genX1 = generator.flow_from_directory(directory=dir1,target_size=(224,224),
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False)
val_genX2 = generator.flow_from_directory(directory=dir2,target_size=(224,224),
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False)
while True:
X1i = val_genX1.next()
X2i = val_genX2.next()
Xsum = np.concatenate((X1i[0],X2i[0]), axis=3)
Xsum = np.expand_dims(Xsum, axis=1)
Xsum=np.swapaxes(Xsum,4,1)
yield Xsum, X2i[1] #Yield both images and their mutual label
inputgenerator=generate_generator_multiple(generator=input_imgen,
dir1=data_path_l,
dir2=data_path_r,
batch_size=batch_size)
validation_inputgenerator= validation_generate_generator_multiple(generator=input_imgen,
dir1=test_data_path_l,
dir2=test_data_path_r,
batch_size=batch_size)
model=Resnet3DBuilder.build_resnet_50((6,224,224,1), num_classes)
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
history=model.fit_generator(inputgenerator,
steps_per_epoch= train_images // batch_size,
validation_data = validation_inputgenerator,
validation_steps = val_images// batch_size,
epochs = epochs,
shuffle=False)
model.save('resnet3D_6sample_lr.h5')