You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras调用multi_gpu_model报TypeError: 'module' object is not callable问询

问题解决方法

报错原因

当前导入语句逻辑错误:from tensorflow.keras import utils as multi_gpu_model是把整个utils模块重命名为multi_gpu_model,而模块本身不能作为函数调用,因此触发了TypeError: 'module' object is not callable报错。

对应解决方案

方案1:沿用原有multi_gpu_model(仅适用于TensorFlow 2.3及更早版本)

TensorFlow 2.4及之后版本已经正式废弃multi_gpu_model接口,如果你使用的是低版本TF,直接修改导入语句即可:

# 正确导入函数,而非导入整个utils模块
from tensorflow.keras.utils import multi_gpu_model
# 调用逻辑和旧版Keras完全一致
multi_model = multi_gpu_model(myModel, gpus=args.gpus)

方案2:使用官方推荐的MirroredStrategy(兼容所有TF2.x版本,推荐)

官方已经不再维护multi_gpu_model,推荐用分布式训练策略接口实现多GPU训练,性能和稳定性都更优,使用方法如下:

  1. 初始化分布式策略
import tensorflow as tf
# 自动检测所有可用GPU,默认使用所有可见GPU做数据并行训练
strategy = tf.distribute.MirroredStrategy()
  1. 在策略作用域内定义、编译模型
with strategy.scope():
    # 此处替换为你原有模型的构建、编译逻辑
    myModel = build_your_custom_model()
    myModel.compile(
        optimizer = "adam",
        loss = "your_loss_function",
        metrics = ["your_metrics"]
    )
  1. 直接调用训练接口即可,不需要额外对模型做转换
# 注意:此处batch_size要设置为单卡batch_size * 可用GPU数量,保证单卡负载和单卡训练时一致
myModel.fit(train_dataset, batch_size = per_gpu_batch * args.gpus, epochs=your_epochs)

内容的提问来源于stack exchange,提问作者Rawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:09:02