Keras 多GPU模式在计算val的准确率时报错

错误信息:

Error: tensorflow/stream_executor/cuda/cuda_dnn.cc:444] could not convert BatchDescriptor {count: 0 feature_map_count: 32 spatial: 149 149 value_min: 0.000000 value_max: 0.000000 layout: BatchDepthYX} to cudnn tensor descriptor: CUDNN_STATUS_BAD_PARAM

github上的解决方法
这个是由于keras源码的问题:
keras.preprocessing.image.py中我们可以看到:

class Iterator(Sequence):
    """Base class for image data iterators.
    Every `Iterator` must implement the `_get_batches_of_transformed_samples`
    method.
    # Arguments
        n: Integer, total number of samples in the dataset to loop over.
        batch_size: Integer, size of a batch.
        shuffle: Boolean, whether to shuffle the data between epochs.
        seed: Random seeding for data shuffling.
    """

    def __init__(self, n, batch_size, shuffle, seed):
        self.n = n
        self.batch_size = batch_size
        self.seed = seed
    
要使用TensorBoard或其他工具来分析模型在不同GPU上的执行效率,首先确保你已经安装了TensorFlow并且知道如何使用其内置的TensorBoard功能。TensorBoard是一个强大的可视化工具,可以帮助你理解训练过程中的性能指标,包括GPU利用率、内存消耗以及执行间等。 以下是如何在TensorFlow中启用TensorBoard并记录GPU性能数据的基本步骤: 1. **设置TensorBoard回调**:在训练循环(如`tf.keras.Model.fit()`)中,添加`tf.keras.callbacks.TensorBoard`回调,指定保存日志的目录。例如: ```python from tensorflow.keras.callbacks import TensorBoard log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = TensorBoard(log_dir=log_dir, histogram_freq=1) model.fit(X_train, y_train, batch_size=batch_size, epochs=num_epochs, validation_data=(X_val, y_val), callbacks=[tensorboard_callback]) ``` 2. **启动TensorBoard服务器**:在命令行中导航到包含日志文件的目录,然后运行`tensorboard --logdir [your_log_dir]`。这将在默认浏览器中打开TensorBoard网页。 3. **检查GPU性能**:在TensorBoard的"Graphs"或"Execution Graph"标签页下,你可以看到每个操作(Op)及其在GPU上的分布情况。如果有一个名为"GPU memory usage"或类似名称的图表,那就展示了GPU内存的占用情况。此外,在" Scalars"标签页中,你会找到像"step/sec"这样的性能指标,它们反映了模型执行速度。 4. **比较不同GPU**:如果你有GPU,并且想比较它们之间的性能,可以在同一项目的不同配置下分别训练,并为每一组训练指定不同的日志路径。之后对比这些日志下的性能指标,即可看出哪个GPU更高效。 5. **利用其他工具**:除了TensorBoard,还可以考虑使用第三方工具,如NVIDIA Nsight Compute或Deep Profiler,它们提供了更详细的GPU性能分析报告,包括但不限于CUDA活动、能耗、热点区域等。 记住,为了得到准确的结果,你需要确保训练过程相同,并且只在一个GPU上进行测试。如果是在分布式环境中,可能需要额外的配置才能反映单个GPU的行为。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值