首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >训练时在图像批次数据上添加白噪声

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

Stack Overflow用户
提问于 2019-02-11 16:49:31
回答 2查看 2.1K关注 0票数 1

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

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

每个镜像都有shape = (256, 128)

我已经编写了一个函数来添加噪声,如下所示:

代码语言:javascript
复制
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 

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

代码语言:javascript
复制
TypeError: mean() missing 3 required positional argument: "dim", "keepdim", "dtype"

我该如何处理这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2019-02-11 17:04:38

你的data是什么形状的?这是什么?type(data)

您是否在Numpy函数中传递了一个DataLoader张量?

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

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

在第一种情况下,您需要提供想要展平数组的维度。在第二种情况下,它应该开箱即用Numpy,因为“默认值是计算扁平化数组的平均值”,但由于您使用的是PyTorch的DataLoader,因此可能需要定义这些。

由于您的average看起来是一个数字,下面这样的代码应该可以工作

代码语言:javascript
复制
average = np.mean(data, axis=(0,1) keepdims=False)
票数 0
EN

Stack Overflow用户

发布于 2019-02-14 00:23:15

作为原始帖子下的第一条评论。数据是PyTorch张量,而我使用的是Numpy方法。我试着使用torch.mean() & torch.std(),它很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54626777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档