当前位置: 首页 > news >正文

龙岗网站制作培训班wordpress商城开发费用

龙岗网站制作培训班,wordpress商城开发费用,成都十大设计工作室,用jsp做的网站需要什么工具栏#x1f468;‍#x1f393;作者简介#xff1a;一位即将上大四#xff0c;正专攻机器学习的保研er #x1f30c;上期文章#xff1a;机器学习深度学习——softmax回归从零开始实现 #x1f4da;订阅专栏#xff1a;机器学习深度学习 希望文章对你… ‍作者简介一位即将上大四正专攻机器学习的保研er 上期文章机器学习深度学习——softmax回归从零开始实现 订阅专栏机器学习深度学习 希望文章对你们有所帮助 继续使用Fashion-MNIST数据集并保持批量大小为256 import torch from torch import nn from d2l import torch as d2lbatch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size)softmax回归的简洁实现 初始化模型参数重新审视softmax的实现数学推导交叉熵函数 优化算法训练 初始化模型参数 softmax的输出层是一个全连接层因此为了实现模型我们只需要在Sequential中添加一个带有10个输出的全连接层。当然这里的Sequential并不是必要的但是他是深度模型的基础。我们仍旧以均值为0标准差为0.01来随机初始化权重。 # pytorch不会隐式地调整输入的形状 # 因此在线性层前就定义了展平层flatten来调整网络输入的形状 net nn.Sequential(nn.Flatten(), nn.Linear(784, 10))def init_weights(m):if type(m) nn.Linear:nn.init.normal_(m.weight, std0.01)net.apply(init_weights) # 给net每一层跑一次init_weights函数重新审视softmax的实现 数学推导 在之前的例子里我们计算了模型的输出然后将此输出送入交叉熵损失。看似合理但是指数级计算可能会造成数值的稳定性问题。 回想一下之前的softmax函数 y ^ j e x p ( o j ) ∑ k e x p ( o k ) 其中 y ^ j 是预测的概率分布 o j 是未规范化的第 j 个元素 \hat{y}_j\frac{exp(o_j)}{\sum_kexp(o_k)}\\ 其中\hat{y}_j是预测的概率分布o_j是未规范化的第j个元素 y^​j​∑k​exp(ok​)exp(oj​)​其中y^​j​是预测的概率分布oj​是未规范化的第j个元素 由于o中的一些数值会非常大所以可能会让其指数值上溢使得分子或分母变成inf最后得到的预测值可能变成的0、inf或者nan。此时我们无法得到一个明确的交叉熵值。 提出解决这个问题的一个技巧在继续softmax计算之前先从所有的o中减去max(o)修改softmax函数的构造且不改变其返回值 y ^ j e x p ( o j − m a x ( o k ) ) e x p ( m a x ( o k ) ) ∑ k e x p ( o j − m a x ( o k ) ) e x p ( m a x ( o k ) ) \hat{y}_j\frac{exp(o_j-max(o_k))exp(max(o_k))}{\sum_kexp(o_j-max(o_k))exp(max(o_k))} y^​j​∑k​exp(oj​−max(ok​))exp(max(ok​))exp(oj​−max(ok​))exp(max(ok​))​ 这样操作以后可能会使得一些分子的exp(o-max(o))有接近0的值即为下溢。这些值可能会四舍五入为0这样就会使得预测值为0那么此时要是取对数以后就会变为-inf。要是这样反向传播几步我们可能会发现自己屏幕有一堆的nan。 尽管我们需要计算指数函数但是我们最终会在计算交叉熵损失的时候会取他们的对数。尽管通过将softmax和交叉熵结合在一起可以避免反向传播过程中可能会困扰我们的数值稳定性问题。如下面的式子 l o g ( y ^ j ) l o g ( e x p ( o j − m a x ( o k ) ) ∑ k e x p ( o k − m a x ( o k ) ) ) l o g ( e x p ( o j − m a x ( o k ) ) ) − l o g ( ∑ k e x p ( o k − m a x ( o k ) ) ) o j − m a x ( o k ) − l o g ( ∑ k e x p ( o k − m a x ( o k ) ) ) log(\hat{y}_j)log(\frac{exp(o_j-max(o_k))}{\sum_kexp(o_k-max(o_k))})\\ log(exp(o_j-max(o_k)))-log(\sum_kexp(o_k-max(o_k)))\\ o_j-max(o_k)-log(\sum_kexp(o_k-max(o_k))) log(y^​j​)log(∑k​exp(ok​−max(ok​))exp(oj​−max(ok​))​)log(exp(oj​−max(ok​)))−log(k∑​exp(ok​−max(ok​)))oj​−max(ok​)−log(k∑​exp(ok​−max(ok​))) 通过上式我们避免了计算单独的exp(o-max(o))而是直接使用o-max(o)。 因此我们计算交叉熵函数的时候传递的不是未规范化的预测o而不是softmax。 但是我们也希望保留传统的softmax函数以备我们要评估通过模型输出的概率。 交叉熵函数 在这里介绍一下交叉熵函数以用于上面推导所需的需求 torch.nn.CrossEntropyLoss(weightNone,ignore_index-100,reductionmean)交叉熵函数是将LogSoftMax和NLLLoss集成到一个类中通常用于多分类问题。其参数使用情况 ignore_index指定被忽略且对输入梯度没有贡献的目标值。 reductionstring类型的可选项可在[none,mean,sum]中选。none表示不降维返回和target一样的形状mean表示对一个batch的损失求均值sum表示对一个batch的损失求和。 weight是一个一维的张量包含n个元素分别代表n类的权重在训练样本不均衡时很有用默认为None 1当weightNone时损失函数计算方式为 loss(x,class)-log(exp(x[class])/Σexp(x[j]))-x[class]log(Σexp(x[j]) 2当weight被指定时损失函数计算方式为 loss(x,class)weight[class]×(-x[class]log(Σexp(x[j])) # 在交叉熵损失函数中传递未归一化的预测并同时计算softmax及其导数 loss nn.CrossEntropyLoss(reductionnone)优化算法 # 优化算法 trainer torch.optim.SGD(net.parameters(), lr0.1)训练 调用之前定义的训练函数来训练模型 # 调用之前的训练函数来训练模型 num_epochs 10 d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer) d2l.plt.show()
http://www.dnsts.com.cn/news/228595.html

相关文章:

  • 郑州做网站优化最好的公司一键设计logo
  • 怎么用网站挂QQwordpress 置顶排序
  • 郑州小程序定制公司天津网站seo设计
  • 博客和个人网站建设情况那些外国网站设计图多
  • 自己如何开网站河北招标网
  • 静态网站开发常用语言监控网站模版
  • 龙岩网站建设加盟个人网站做淘宝客如何备案
  • 事业单位网站建设注销情况说明大航母网站建设与服务
  • 网站策划书主题一般使用的分辨率是多少dpi
  • 门户网站建设说明书哪些网站做的最有特色
  • 网络销售平台北京aso优化
  • 国外教做美食网站义乌门户网站建设
  • 网站怎么添加软件建筑工地招工网
  • 免费做网站空间wordpress获取分类文章
  • 企业网站建设应遵守的原则沈阳做网站直播的公司
  • 做网站用什么工具网站建设谈业务要知道什么
  • 东莞建设网站开发51传奇网页游戏
  • 长沙商城网站建设报价公示怎么做app网站
  • wordpress主题修改字体商城网站怎么优化
  • 网站模板库软件软件技术就业前景怎么样
  • 四川住建厅官方网站的网址如何做好线上推广和引流
  • 宁波制作网站软件太原做网站
  • 绵阳个人网站建设品牌网站设计制作公司
  • 上海网站备案号查询互联网+大赛
  • 工会网站建设东营市
  • 潍坊网站排名公司wordpress主题防止破解
  • 网站建设要经历哪些步骤天津建筑工程信息平台
  • 宏润建设集团有限公司网站网站营销
  • 家政服务网站模板seo推广的步骤
  • 建设装饰网站wordpress对比phpcms