首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >神经网络输入缩放

神经网络输入缩放
EN

Stack Overflow用户
提问于 2020-04-27 04:20:34
回答 2查看 292关注 0票数 0

我在CIFAR-10数据集上训练了一个简单的全连接网络:

代码语言:javascript
运行
AI代码解释
复制
import torch
import torch.nn as nn
import torch.nn.functional as F
import torchvision
import torchvision.transforms as transforms

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(3*32*32, 300, bias=False)
        self.fc2 = nn.Linear(300, 10, bias=False)

    def forward(self, x):
        x = x.reshape(250, -1)
        self.x2 = F.relu(self.fc1(x))
        x = self.fc2(self.x2)
        return x


def train():
    # The output of torchvision datasets are PILImage images of range [0, 1].
    transform = transforms.Compose([transforms.ToTensor()])
    trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
    trainloader = torch.utils.data.DataLoader(trainset, batch_size=250, shuffle=True, num_workers=4)
    testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform)
    testloader = torch.utils.data.DataLoader(testset, batch_size=args.bs, shuffle=False, num_workers=4)

    net = Net()
    criterion = nn.CrossEntropyLoss()
    optimizer = torch.optim.SGD(net.parameters(), lr=0.02, momentum=0.9, weight_decay=0.0001)

    for epoch in range(20):
        correct = 0
        total = 0
        for data in trainloader:
            inputs, labels = data
            outputs = net(inputs)
            loss = criterion(outputs, labels)

            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
            _, predicted = torch.max(outputs.data, 1)
            total += labels.size(0)
            correct += (predicted == labels).sum().item()
        acc = 100. * correct / total

在20个时期后,该网络在指定参数的情况下达到~50%的测试精度。请注意,我没有对输入进行任何白化(没有每个通道的均值减法)

接下来,我将模型输入放大了255倍,用outputs = net(inputs*255)替换了outputs = net(inputs)。在此更改之后,网络将不再收敛。我查看了梯度,它们似乎在几次迭代后呈爆炸性增长,导致所有模型输出为零。我想知道为什么会发生这样的事情。

此外,我还尝试将学习率降低了255。这很有帮助,但网络只能达到~43%的准确率。再说一次,我不明白为什么这会有帮助,更重要的是,为什么与原始设置相比,准确性仍然下降。

编辑:忘了提一下,我在这个网络中不使用偏见。

EDIT2:如果我将两层中的初始权重都缩小255 (除了缩小学习率之外),我可以恢复原始的精度。我还试图仅在第一层中缩小初始权重,但网络在学习方面遇到了问题(即使我确实缩小了两层的学习率)。然后我试着只在第一层降低学习率-这也没有帮助。最后,我尝试进一步降低两层的学习率( 255*255),这突然起作用了。这对我来说是没有意义的-按相同的因子缩小初始权重,输入应该已经完全消除了与原始网络的任何差异,第二层的输入是相同的。在这一点上,学习率应该只在第一层缩小,但在实践中,两层都需要明显较低的学习率……

EN

回答 2

Stack Overflow用户

发布于 2020-04-27 06:38:40

由于以下几个观察结果,放大输入将导致梯度爆炸:

  1. 在给定的更新步骤中,学习率对所有权重都是通用的。
  2. 因此,相同的比例因子(即:学习率)应用于给定权重的成本导数,而不考虑其大小,因此大小权重都使用相同的比例进行更新。
  3. 当损失情况非常不稳定时,这会导致梯度爆炸。(就像滚雪球效应一样,一次超调更新-例如,一个特定权重的轴-在下一次更新中会导致另一次超调,从而再次超调,以此类推。)

像素的值范围是0到255,因此将数据缩放255将确保所有输入都在0和1之间,因此更平滑地收敛,因为所有梯度相对于学习率将是均匀的。但在这里,您缩放了学习率,它调整了上面提到的一些问题,但不如缩放数据本身那么有效。这降低了学习率,从而使收敛时间更长,这可能是它在20个时期达到43%的原因,也许它需要更多的时期。

此外: CIFAR-10比MNIST数据集是一个重要的进步,因此,完全连接的神经网络没有准确预测这些图像所需的表示能力。对于MNIST之外的任何图像分类任务,CNN都是可行的。不幸的是,使用完全连接的神经网络,~50%的准确率是最高的。

票数 0
EN

Stack Overflow用户

发布于 2020-04-27 18:23:23

可能会将学习率降低1/255 ...只是个猜测

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

https://stackoverflow.com/questions/61451662

复制
相关文章
图片打水印 缩放 和一个输入流的转换
图片的缩放使用了Thumbnails这个工具,(事实上它也能够用来打水印的,只是我还没有研究)
全栈程序员站长
2022/07/06
3410
窗口动画缩放,过渡动画缩放,Animator时长缩放_关闭动画缩放好不好
最近用到了ScaleAnimation来实现图片放大需求,今天就把使用过程中学习的一些东西总结记录一下,希望能对大家有所帮助。
全栈程序员站长
2022/11/19
2.8K0
数据是如何输入到神经网络中
我们在做深度学习任务的时候,总会有这样的困惑? 比如我们做的CV项目,那么我们采集的图像数据集是如何输入到神经网络中去的呢?图像中的特征又是如何提取的呢?
杨鹏伟
2022/07/17
7580
数据是如何输入到神经网络中
EfficientNet详解:用智能缩放的卷积神经网络获得精度增益
自从Alex net在2012年ImageNet挑战赛中获胜后,卷积神经网络就在计算机视觉领域中无处不在。它们甚至在自然语言处理中也有应用,目前最先进的模型使用卷积运算来保留上下文并提供更好的预测。然而,与其他神经网络一样,设计cnn网络的关键问题之一是模型缩放,例如决定如何增加模型的尺寸,以提供更好的准确性。
deephub
2020/06/24
1.2K0
EfficientNet详解:用智能缩放的卷积神经网络获得精度增益
图像缩放
o.shape= (460, 460, 3) rst.shape= (230, 920, 3)
裴来凡
2022/05/28
1.5K0
图像缩放
在 React 中缩放、裁剪和缩放图像
在本文中,我们将了解如何使用 Cropper.js 在 React Web 应用中裁剪图像。尽管我们不会将这些图像上传到远程服务器进行存储,但是很容易就能完成这个任务。
疯狂的技术宅
2020/02/26
6.4K0
在 React 中缩放、裁剪和缩放图像
【干货】消除 Artifact,用缩放卷积神经网络生成高清图像(TensorFlow 代码)
【新智元导读】非常仔细地观察神经网络生成的图像时,经常会看到一些奇怪的棋盘格子状的伪影(棋盘效应,checkboard artifacts)。本文作者讨论了棋盘效应出现的原因以及反卷积难以避免棋盘效应
新智元
2018/03/26
1.7K0
【干货】消除 Artifact,用缩放卷积神经网络生成高清图像(TensorFlow 代码)
滚轮缩放
要使人成为真正有教养的人,必须具备三个品质:渊博的知识、 思维的习惯和高尚的情操。知识不多就是愚昧;不习惯于思维, 就是粗鲁或蠢笨;没有高尚的情操,就是卑俗。——车尔尼雪夫斯基 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>scroll</title> </head> <body> <img width="500px" id="img" src="https://vampireachao
阿超
2022/08/16
2.2K0
滚轮缩放
android缩放动画中心缩放_安卓动画缩放调到多少比较好
备注:由于我的图片是导出视频再用PS转换成的gif,故效率上有所损失,实际动画效果和速度比图片的快。
全栈程序员站长
2022/11/04
2.4K0
android缩放动画中心缩放_安卓动画缩放调到多少比较好
svg平移缩放
svg平移缩放,我刚开始尝试的是自己处理外层容器的控制,结果发现能用,但是效果不太好,有拖尾现象,后来用个js库svg-pan-zoom即可。如果想支持手机端手势操作,需要先安装Hammer.js。
IT晴天
2018/08/20
3.2K0
一维卷积神经网络的理解是什么_卷积神经网络的输入
如下,设置一维卷积网络的输入通道为16维,输出通道为33维,卷积核大小为3,步长为2
全栈程序员站长
2022/11/09
9230
漫谈特征缩放
说起"炼丹"最耗时的几件事,首先就能想到的就是数据清洗,特征工程,还有调参.特征工程真的是老生常谈了,但是特征工程又是最重要的一环,这一步做不好怎么调参也没用.在特征工程中,做特征缩放是非常重要的,如下图所示:
炼丹笔记
2021/09/02
9830
OpenCV 图片缩放
对图像进行缩放的最简单方法就是调用OpenCV中resize函数。resize函数可以将源图像精确地转化为指定尺寸的目标图像。要缩小图像,一般推荐使用CV_INETR_AREA来插值;若要放大图像,推荐使用CV_INTER_LINEAR。
AI异构
2020/07/29
3.5K0
OpenCV 图片缩放
ImageView缩放选项
用户1172465
2018/01/08
1.6K0
CImage 缩放图片
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149663.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/12
1.6K0
图片缩放中心
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117400.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
1.7K0
图片缩放中心
[android] 图片的缩放
调用BitmapFactory.decodeResource(res,id)方法,获取Bitmap对象
唯一Chat
2019/09/10
1.6K0
图像缩放示例
二维图像的缩放属于仿射变换或者透视变换的范畴,一般可以通过OpenCV的warpAffine()或者warpPerspective()函数实现。 出于兴趣,根据仿射变换公式自己简单写了一个函数实现图像的缩放,缩放中心设置为图像中心。 代码如下: 1 #include <iostream> 2 #include <string> 3 #include <opencv2/opencv.hpp> 4 5 using namespace std; 6 using namespace cv;
一棹烟波
2018/01/12
9840
图像缩放示例
ScaleAnimation 缩放动画效果[通俗易懂]
ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
全栈程序员站长
2022/11/07
1.4K0
Android图片处理--缩放
把ImageView或者PhotoView的对象名直接添加到display中就OK 了。
cMusketeer
2018/06/17
2.8K0

相似问题

神经网络缩放输入和缩放输出

10

用缩放输入解释神经网络

10

将输入数据缩放到神经网络

13

matlab神经网络中输入数据的缩放

12

在不同尺度的神经网络上缩放输入

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文