复现DnCNN python代码出现问题,请求解决

作为一个刚开始学习深度学习的人,今天在复现CnDNN的源代码中data_genetator时,出现下列问题:

img

axis 3 is out of bounds for array of dimension 2

请帮忙解答
下面是DnCNN源代码
https://github.com/cszn/DnCNN.

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据您提供的信息,似乎是因为您的数据集的维度不正确导致的。具体来说,报错信息中的 axis 3 is out of bounds for array of dimension 2 表示您的数据集只有2维,但是在代码中却尝试访问第3维。

根据您提供的截图,问题出现在 data_generator.py 文件的第26行,具体代码如下:

noise = np.random.normal(0, noise_level, [batch_size, patch_size, patch_size, 1])

根据代码注释,这行代码的作用是生成一组噪声图像用于训练。根据报错信息,似乎是 np.random.normal 函数生成的噪声图像的维度不正确,导致访问第3维时出现了越界错误。

为了解决这个问题,您需要检查一下您的数据集的维度是否正确。您可以在代码中添加一些调试代码来检查数据集的维度,例如:

print(train_data.shape)
print(train_label.shape)

其中 train_datatrain_label 分别表示训练数据和标签数据,您可以在代码中添加这些调试代码来输出数据集的维度,以便检查它们是否正确。

另外,您还可以尝试使用 np.expand_dims 函数来扩展数据集的维度,例如:

train_data = np.expand_dims(train_data, axis=3)
train_label = np.expand_dims(train_label, axis=3)

这个函数可以在指定的轴上扩展数据集的维度,这样可以确保数据集的维度正确,避免出现越界错误。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢