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 =
非常感谢您的问题!以下是可能需要的步骤和环境配置: 步骤: 1. 加载firedataltraining sets数据集和firedataltest sets测试数据集。 2. 进行数据预处理,包括图像缩放和标准化。 3. 建立CNN模型并进行训练。 4. 在firedataltest sets测试数据集上评估模型的准确率。 5. 从网站下载相关图片,对其进行预测。 6. 画出准确率曲线。 环境配置: 1. 安装Python 3.x。 2. 安装TensorFlow或Keras等深度学习框架。 3. 安装NumPy、Pandas、Matplotlib等科学计算和数据可视化库。 4. 准备GPU加速环境(非必需)。 以下是一个基本的Python程序,可用于建立CNN模型并在firedataltest sets测试数据集上评估其准确率: ```python import tensorflow as tf from tensorflow.keras import datasets, layers, models import matplotlib.pyplot as plt # 加载数据集 (train_images, train_labels), (test_images, test_labels) = datasets.firedatal.load_data() # 数据预处理 train_images = train_images / 255.0 test_images = test_images / 255.0 # 构建模型 model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10)) # 编译模型 model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) # 训练模型 history = model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels)) # 评估模型 test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2) print('\nTest accuracy:', test_acc) # 画出准确率曲线 plt.plot(history.history['accuracy'], label='accuracy') plt.plot(history.history['val_accuracy'], label = 'val_accuracy') plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.ylim([0.5, 1]) plt.legend(loc='lower right') plt.show() ``` 您可以将此程序作为起点,并根据您的具体需求进行修改和调整。如果您遇到了任何问题或需要更详细的指导,请随联系我。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值