Keras多GPU模型训练

        from keras.callbacks import TensorBoard, ModelCheckpoint
        from keras.utils import multi_gpu_model # 导入keras多卡函数

        class ParallelModelCheckpoints(ModelCheckpoint): # 在保存模型时,由于存在两个模型,所以需要指定model,\
                                                        # 继承ModelCheckpoint,重写init()
            def __init__(self, 
                         model, # 需要保存的模型
                         filepath='./log/epoch-{epoch:02d}_loss-{loss:.4f}_acc-{val_acc:.4f}_lr-{lr:.5f}.h5',
                         monitor='val_acc',
                         verbose=1,
                         save_best_only=True,
                         save_weights_only=False,
                         mode='auto',
                         period=1):
                self.single_model = model
                super(ParallelModelCheckpoints, self).__init__(filepath, monitor, verbose,save_best_only, save_weights_only, mode, period)
        
            def set_model(self, model):
                super(ParallelModelCheckpoints, self).set_model(self.single_model)

        # 首先在cpu上创建原来的模型
        with tf.device('/cpu:0'):
            model = MobileNet(...)
        # 创建多卡模型
        parallel_model = multi_gpu_model(model, gpus=4) # 其中 4 是gpu的数量
        parallel_model.load_weights(h5_path, by_name=True) # 继续训练的时候导入参数是用的parallel_model模型,而不是model
        parallel_model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])
        
        model_checkpoint = ParallelModelCheckpoints(model) # 设置需要保存h5的模型

        print("Start training the model")  
        # 然后就可以训练了
        training_history = parallel_model.fit_generator(
            train_generator,
            steps_per_epoch=step_size_train,
            validation_data=validation_generator,
            validation_steps=step_size_valid,
            epochs=epoch_list[-1],
            verbose=1,
            callbacks=[TensorBoard(log_dir='./tb'), model_checkpoint, stepDecayLR])
        print("Model training finished")

参考网址:

  1. https://blog.csdn.net/xingkongyidian/article/details/88343115
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值