当前位置: 首页> 娱乐> 影视 > 网站设计的软件_成都有名的建筑公司有哪些_网站百度收录秒收方法_优化百度涨

网站设计的软件_成都有名的建筑公司有哪些_网站百度收录秒收方法_优化百度涨

时间:2025/7/11 2:51:30来源:https://blog.csdn.net/m0_61360701/article/details/146504455 浏览次数:1次
网站设计的软件_成都有名的建筑公司有哪些_网站百度收录秒收方法_优化百度涨

《动手学深度学习》-4.2-笔记

  • 多层感知机在输出层和输入层之间增加一个或多个全连接隐藏层,并通过激活函数转换隐藏层的输出。

  • 常用的激活函数包括ReLU函数、sigmoid函数和tanh函数。

  • 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)

    分析 :导入fashion_ minist数据集(图像数据集处理可以参考3.5

  • num_inputs, num_outputs, num_hiddens = 784, 10, 256W1 = nn.Parameter(torch.randn(num_inputs, num_hiddens, requires_grad=True) * 0.01)
    b1 = nn.Parameter(torch.zeros(num_hiddens, requires_grad=True))
    W2 = nn.Parameter(torch.randn(num_hiddens, num_outputs, requires_grad=True) * 0.01)
    b2 = nn.Parameter(torch.zeros(num_outputs, requires_grad=True))params = [W1, b1, W2, b2]

    定义输入、输出和隐藏层的维度:784个输入特征 和10个类的简单分类数据集,隐藏层的维度为256,
    定义网络参数:W1b1 是第一层(输入层到隐藏层)的权重和偏置:

  • torch.randn(num_inputs, num_hiddens):生成一个形状为 (784, 256) 的张量,其元素从标准正态分布(均值为 0,标准差为 1)中随机采样。

    W2b2 是第二层(隐藏层到输出层)的权重和偏置:

  • torch.randn(num_hiddens, num_outputs):生成一个形状为 (256, 10) 的张量,其元素从标准正态分布中随机采样。

    def relu(X):a = torch.zeros_like(X)return torch.max(X, a)
    

    将实现ReLU激活函数, 

模型

def net(X):X = X.reshape((-1, num_inputs))H = relu(X@W1 + b1)  # 这里“@”代表矩阵乘法return (H@W2 + b2)
  1. 输入数据 X 被重塑为 (batch_size, num_inputs) 的形状。

  2. 第一层(输入层到隐藏层)的计算:H = relu(X@W1 + b1),其中 relu 是激活函数。

  3. 第二层(隐藏层到输出层)的计算:output = H@W2 + b2,返回输出层的结果。

损失函数 

loss = nn.CrossEntropyLoss(reduction='none')

 使用了 PyTorch 的 nn.CrossEntropyLoss 来定义一个损失函数,并且通过 reduction='none' 参数指定了损失的计算方式。

  • reduction='none' 表示损失函数会为每个样本单独计算损失值,返回一个形状为 (batch_size,) 的张量,其中每个元素对应一个样本的损失值。

num_epochs, lr = 10, 0.1
updater = torch.optim.SGD(params, lr=lr)
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)

定义了训练的轮数、学习率,并使用随机梯度下降(SGD)优化器来更新网络参数,最后调用一个训练函数来执行训练和评估过程。
d2l.train_ch3 是一个封装好的函数,内部逻辑

  1. 初始化

    • 初始化训练和测试的损失、准确率等指标。

  2. 训练循环

    • 遍历每个训练轮数(num_epochs)。

    • 在每个训练轮中:

      • 遍历训练数据迭代器(train_iter),逐批次获取训练数据。

      • 对每个批次的数据:

        • 前向传播:通过网络模型(net)计算输出。

        • 计算损失:使用损失函数(loss)计算模型输出与真实标签之间的损失。

        • 反向传播:计算梯度。

        • 参数更新:使用优化器(updater)更新网络参数。

      • 记录训练损失和准确率。

  3. 测试

    • 在每个训练轮结束后,使用测试数据迭代器(test_iter)评估模型的性能。

    • 计算测试损失和准确率。

  4. 输出

    • 打印每个训练轮的训练损失、训练准确率、测试损失和测试准确率。报错,修改:要解决这个问题,需要确保在调用 backward() 之前,损失值是一个标量。将损失函数的 reduction 参数改为 'mean''sum',这样损失函数会返回一个标量值,而不是一个张量。

 d2l.predict_ch3 是一个函数,通常来自 Dive into Deep Learning (D2L) 教程库,用于对测试数据进行预测并展示预测结果。它的主要作用是使用训练好的神经网络模型对测试数据进行分类预测,并将预测结果与真实标签进行对比,以便直观地评估模型的性能。

关键字:网站设计的软件_成都有名的建筑公司有哪些_网站百度收录秒收方法_优化百度涨

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: