def generator(path, batch_size):
images, masks = readImage(path)
n = images.shape[0]
index = np.arange(n)
while True:
np.random.shuffle(index)
for i in range(0, n, batch_size):
if i+batch_size >= n:
break
rImgs = []
rMasks = []
for j in range(i, i+batch_size):
rImgs.append(images[index[j], :, :, :])
rMasks.append(masks[index[j], :, :, :])
rImgs = np.array(rImgs)
rMasks = np.array(rMasks, dtype=np.float)
# return rImgs, rMasks
yield rImgs, rMasks
if __name__ == '__main__':
trainingGenerator = generator('E:\\Create\\cat\\Data\\Training', batch_size=1)#生成器#
valGenerator = generator('E:\\Create\\cat\\Data\\Validation', batch_size=1)
optimizer = SGD(learning_rate=0.01, momentum=0.95)#定义优化器#
model.compile(optimizer=optimizer,#将优化器送入模型#
loss=bce_dice_loss,
metrics=['binary_crossentropy', 'accuracy', dice_coef])
tensorboard = TensorBoard(log_dir='./Data/record', histogram_freq=0)
checkpoint = ModelCheckpoint(filepath='./Data/record/bestModel.hdf5', save_best_only=True,save_weights_only=True)
model.fit_generator(
generator=trainingGenerator,
steps_per_epoch=100,
epochs=1,
validation_data=valGenerator,
validation_steps=10,
callbacks=[tensorboard, checkpoint]
)