训练时在图像批量数据上添加白噪声

问题描述 投票:1回答:2

我正在尝试一种去噪模型,目标是打印出每批次的clean / add_noise / model_output

我正在使用PyTorch DataLoader。每个图像都有shape = (256, 128)和集合batch_size = 10,因此每批都有(10, 256, 128)大小。我想打印出每批的第一批数据,即batch_data[0]

每张图片都有shape = (256, 128)

我写了一个添加噪音的功能如下:

def add_noise(data, bs, target_snr, noise_type):

    if noise_type == 'white':
        noise = acoustics.generator.white(bs*256*128).reshape(bs, 256, 128)

    if noise_type == 'pink':
        noise = acoustics.generator.pink(bs*256*128).reshape(bs, 256, 128)


    print ('data shape = ', data.shape)

    average = np.mean(data)
    std = np.std(noise)
    current_snr = average/std

    noise = noise * (current_snr/ target_snr)
    data = data + noise

    return data 

但是,它会保留返回错误消息,如下所示:

TypeError: mean() missing 3 required positional argument: "dim", "keepdim", "dtype"

我应该怎么处理这个?

python numpy deep-learning pytorch noise
2个回答
0
投票

你的data的形状是什么?什么是type(data)? 你在Numpy功能中传递DataLoader Tensor吗?

看看documentation的Numpy的mean()函数,其中也包含一些例子。

该函数采用类似数组的对象作为其输入(例如,可以是2d矩阵),因此不会立即明确定义平均值。您是否需要计算矩阵中行,列或所有数据的平均值?计算中使用的数据类型是什么?

在第一种情况下,您需要提供要展平阵列的尺寸。在第二种情况下,它应该与Numpy开箱即用,“默认是计算扁平数组的平均值”,但由于你正在使用PyTorch的DataLoader,它可能需要定义它们。

由于你的average似乎是一个数字,这样的事情应该有效

average = np.mean(data, axis=(0,1) keepdims=False)

0
投票

作为原帖下的第一条评论。数据是PyTorch张量,而我使用的是Numpy的方法。我尝试使用torch.mean()torch.std(),它的工作原理。

© www.soinside.com 2019 - 2024. All rights reserved.