【keras】多GPU训练模型及保存

下面是一个小demo,需要注意的地方是保存模型的时候只保存单个GPU的模型,不要保存多GPU训练的模型,否则加载时会报错的。

from sklearn.datasets import make_blobs
from keras.layers import Dense, Input
from keras import Model
from keras.utils import multi_gpu_model

def MLP(hidden=50):
    inputs = Input(shape=(2,))
    x = Dense(units=hidden, activation='relu')(inputs)
    out = Dense(units=3, activation='softmax')(x)
    return Model(inputs, out)


x, y = make_blobs(n_samples=5000, centers=3, n_features=2,
                  cluster_std=2, random_state=2)
trainnum = 2000
train_x, train_y = x[:trainnum], y[:trainnum]
evalu_x, evalu_y = x[trainnum:], y[trainnum:]
print('train_x %s train_y %s   evalu_x %s evalu_y %s' %
      (train_x.shape, train_y.shape, evalu_x.shape, evalu_y.shape))

mlp = MLP()
par_mlp = multi_gpu_model(mlp, gpus=2)
par_mlp.compile(loss='sparse_categorical_crossentropy',
                optimizer='adam', metrics=['accuracy'])
par_mlp.fit(train_x, train_y, validation_data=(
    evalu_x, evalu_y), epochs=50, verbose=1, batch_size=200)
mlp.save_weights('mlp.h5') # 保存模型只保存单个模型的权重
# 加载预测时
model = MLP()
model.compile(loss='sparse_categorical_crossentropy',
              optimizer='adam', metrics=['accuracy'])
model.load_weights('mlp.h5')
_, evalu_acc = model.evaluate(evalu_x, evalu_y, verbose=1)
print('> Evaluate accuracy %.4f' % evalu_acc)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值