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

网站做推广搜索引擎营销的典型案例

网站做推广,搜索引擎营销的典型案例,wordpress产品目录,漳州企业网站建设本文为#x1f517;[小白入门Pytorch]学习记录博客 文章目录 前言一、神经网络的组成部分1.神经元2.神经网络层3.损失函数4.优化器 二、Pytorch构建神经网络中的网络层全连接层2.卷积层3.池化层4.循环神经网络5.转置卷积层6.归一化层7.激活函数层 三、数据加载与预处理1.数据加… 本文为[小白入门Pytorch]学习记录博客 文章目录 前言一、神经网络的组成部分1.神经元2.神经网络层3.损失函数4.优化器 二、Pytorch构建神经网络中的网络层全连接层2.卷积层3.池化层4.循环神经网络5.转置卷积层6.归一化层7.激活函数层 三、数据加载与预处理1.数据加载2.数据预处理 四、模型训练与验证1.模型训练2.模型验证 总结 前言 本文主要记录深度学习中的神经网络学习内容包括理论和代码 一、神经网络的组成部分 在小白入门pytorch(一)中学习了pytorch的基本操作本篇文章主要是记录使用Pytorch搭建神经网络的基础代码。文章记录的 顺序是按照[小白入门Pytorch]教案二进行的。 神经网络的组成部分 神经元神经网络层 1.神经元 了解一下神经网络的历史神经生物学家Warren MeCulloch和数学家Walter Pitts于1943年提出了一种基于早期的神经元理论学说的人工神经网络模型称为MP模型McCulloch-Pitts模型。该模型是一种具有生物神经元特征的人工神经网络模型被认为是神经网络研究的开端。 MP模型的基本思想是将神经元视为一个二进制变量二进制变量很好懂要么是1要么是01是神经元兴奋和0是神经元抑制我们将多个神经元进行连接进行一系列的矩阵运算就可以实现复杂的计算功能即是神经网络。 神经元通常由以下几个部分组成 输入Inputs神经元接收来自其他神经元或外部环境的输入数据。权重Weights每个输入都与一个权重相关联用于调整输入的重要性。激活函数激活函数将加权输入映射到输出。常用的激活函数包括Sigmoid、ReLU和Tanh这几个激活函数都是非线性的等。偏置Bias偏置是一个可学习的参数用于调整神经元输出的阈值。 import torchclass Neuron(torch.nn.Module):def __init__(self, input_size):# 继承PyTorch中nn.Module类并实现自定义神经元模型Neuronsuper(Neuron, self).__init__()# 定义权重参数大小为input_sizeself.weights torch.nn.Parameter(torch.randn(input_size))# 定义偏置参数大小为1self.bias torch.nn.Parameter(torch.randn(1))# 实现前向传播函数def forward(self, inputs):# 计算加权和点乘输入和权重然后加上偏置weighted_sum torch.sum(inputs * self.weights) self.bias# 应用sigmoid函数进行非线性变换计算输出结果output torch.sigmoid(weighted_sum)return output# 创建一个Neuron对象输入大小为3 neuron Neuron(3)# 输入层大小为3的张量 inputs torch.tensor([0.5, -0.3, 0.1])# 计算神经元的输出 output neuron(inputs)# 打印输出结果 print(output) 输出结果 tensor([0.3399], grad_fnSigmoidBackward0)上面这部分代码是定义了一个自定义的神经元模型 Neuron并计算了神经元的输出使用Pytorch搭建。 首先先定义一个定义了一个名为 Neuron 的类它继承自 torch.nn.Module。该类表示一个神经元模型并具有两个属性权重参数 weights 和偏置参数 bias。这些参数在初始化时根据输入大小进行随机初始化。 然后在 forward 方法中计算加权和权重与输入的点乘之和并添加了偏置。 接下来应用 sigmoid 激活函数将加权和转化为非线性输出。 最后输出结果。 2.神经网络层 神经网络是一种有多个神经元以一定的方式联结形成的网络结构是一种仿照生物神经网络结构和功能的人工智能技术。 说白了神经网络中的计算过程就是矩阵运算当然我这里指的是前线传播的过程。反向传播就是求导。 神经网络的组成: 输入层、多个隐藏层、输出层 以下是一些常见的神经网络层类型 全连接层Fully Connected Layer每个神经元都与前一层的所有神经元相连接。卷积层Convolutional Layer应用卷积操作来提取输入数据中的空间特征。池化层Pooling Layer通过减少特征图的大小来降低计算量并保留重要的特征。循环层Recurrent Layer通过在神经网络中引入时间维度来处理序列数据。 下面是一个包含两个全连接层的神经网络示例代码 import torch# 定义神经网络类继承torch.nn.Module class NeuralNetwork(torch.nn.Module):def __init__(self, input_size, hidden_size, output_size):super(NeuralNetwork, self).__init__()# 定义第一个全连接层输入大小为input_size,输出大小为hidden_sizeself.fc1 torch.nn.Linear(input_size, hidden_size)# 定义第二个全连接层输入大小hidden_size,输出大小为output_sizeself.fc2 torch.nn.Linear(hidden_size, output_size)def forward(self, inputs):# 计算第一个全连接层的输出结果并使用ReLU激活函数处理hidden torch.relu(self.fc1(inputs))# 计算第二个全连接层的输出结果并使用Sigmoid激活函数处理output torch.sigmoid(self.fc2(hidden))return output# 创建神经网络实例输入大小为2隐藏层大小为3输出大小为1 net NeuralNetwork(2, 3, 1)# 准备输入数据包含2个数值 inputs torch.tensor([0.5, -0.3])# 对于输入数据计算神经网络的输出结果 output net(inputs)# 打印输出结果 print(output) 输出结果 tensor([0.5437], grad_fnSigmoidBackward0)首先定义了一个名为 NeuralNetwork 的类它继承自 torch.nn.Module。该类表示一个具有两个全连接层的神经网络其中输入大小为 input_size隐藏层大小为 hidden_size输出大小为 output_size。在初始化方法中创建了两个全连接层并分别将它们存储在类属性 fc1 和 fc2 中。第一个全连接层将输入数据投影到隐藏层空间其权重矩阵大小为 (hidden_size, input_size)偏置向量大小为 (hidden_size)。 第二个全连接层将隐藏层空间投影到输出空间其权重矩阵大小为 (output_size,hidden_size)偏置向量大小为 (output_size)。在前向传播方法 forward 中首先对输入数据执行第一个全连接层的计算并使用 ReLU激活函数处理其输出结果。然后我们对第二个全连接层的输出结果进行计算并使用 Sigmoid激活函数处理其输出结果。最后我们返回其输出结果。 创建了一个实例 net其输入大小为2隐藏层大小为3输出大小为1。这意味着当我们将大小为2的输入数据输入模型时模型将计算一个由1个数值组成的输出。准备了一个大小为2的输入向量inputs并将其传递给网络模型得到网络的输出结果。具体而言我们调用 net(inputs)执行前向传播计算并将其输出结果存储在变量 output 中。 3.损失函数 神经网络的目标是最小化预测输出与真实标签之间的差异。损失函数衡量了这种差异并提供一个可优化的目标。常见的损失函数包括**均方误差Mean Squared Error、交叉熵损失Cross-Entropy Loss、对数损失Log Loss**等。 均方误差Mean Squared ErrorMSE计算预测值与目标值之间的平方差的平均值。torch.nn.MSELoss()交叉熵损失Cross-Entropy Loss在分类问题中计算预测概率分布与真实标签之间的交叉熵。 torch.nn.CrossEntropyLoss()对数损失Log Loss损失函数:对数损失也是一个常见的分类损失函数它通常用于处理二分类问题。它基于交叉熵损失函数但对模型输出的概率应用了对数函数。torch.nn.BCELoss() 以下是一个使用均方误差作为损失函数的示例 import torch# 创建预测值张量 predictions torch.tensor([0.99999, 0.2222, 0.11111])# 创建标签值张量 labels torch.tensor([1.0, 1.0, 0.0])# 实例化均方根误差MSE损失函数对象 loss_function torch.nn.MSELoss()# 使用损失函数计算预测值和标签值之间的均方根误差 loss loss_function(predictions, labels)# 打印均方根误差 print(loss) 输出结果 tensor(0.2058)4.优化器 优化器用于更新神经网络参数以最小化损失函数。它使用梯度下降算法来调整参数的值。常用的优化器包括随机梯度下降Stochastic Gradient Descent, SGD、Adam等 import torch# 创建一个神经网络和损失函数 net NeuralNetwork(2, 3, 1) # 创建一个具有2个输入特征、3个隐藏层单元和1个输出的神经网络模型 loss_function torch.nn.MSELoss() # 均方根误差MSE损失函数# 创建一个优化器 optimizer torch.optim.Adam(net.parameters(), lr0.01) # Adam优化器用于参数更新学习率为0.01# 输入数据和真实标签 inputs torch.tensor([0.1, -0.3]) # 输入数据张量包含两个特征 labels torch.tensor([1.0]) # 真实标签张量# 前向传播 output net(inputs) # 将输入数据传递给神经网络模型进行前向传播得到预测值 loss loss_function(output, labels) # 使用损失函数计算预测值和真实标签之间的均方根误差# 反向传播和参数更新 optimizer.zero_grad() # 清零之前的梯度避免梯度累积 loss.backward() # 执行反向传播计算梯度 optimizer.step() # 根据梯度更新网络参数print(loss) # 打印损失值 输出结果 tensor(0.2413, grad_fnMseLossBackward0)二、Pytorch构建神经网络中的网络层 在pytorch中神经网络层layers是神经网络的基本组成部分用于对输入数据进行转换和提取特征。Pytorch提供了丰富的层类型和功能使得构建和训练深度学习模型变得更加便捷和灵活。 神经网络中包括哪些层呢 1.全连接层Fully connected Layer 2.卷积层Convolutional Layer 3.池化层Pooling Layer 4.循环神经网络层Recurrent Neural Network Layer 5.转置卷积层Transpose Convolutional Layer 6.归一化层Normalization Layer 7.激活函数层Activation Function Layer 8.损失函数层Loss Function Layer 9.优化器层optimizer Layer 全连接层 全连接层也被称为线性层或密集层是最简单的神经网络之一。它将输入的每个元素与权重相乘并加上偏置项然后通过激活函数进行非线性变换。全连接层的输出形状由其输入形状和输出维度确定。 import torch import torch.nn as nn# 导入PyTorch库# 定义输入和输出维度 input_size 784 # 输入特征的数量784 output_size 10 # 输出特征的数量表示10个不同的类别# 创建全连接层 fc_layer nn.Linear(input_size, output_size) # 创建一个全连接层对象输入特征数量为784输出特征数量为10# 打印全连接层的权重和偏置项 print(权重, fc_layer.weight) # 打印全连接层的权重形状为(10, 784) print(偏置项, fc_layer.bias) # 打印全连接层的偏置项形状为(10,)权重 Parameter containing: tensor([[ 2.5574e-02, -5.3259e-03, -4.4039e-03, ..., 4.0028e-05,8.8669e-03, -1.5488e-02],[ 9.5699e-04, 1.1061e-03, 1.3532e-02, ..., 2.4001e-02,3.0188e-03, -1.9964e-02],[-2.4929e-02, -6.6258e-05, -3.1090e-02, ..., 2.0909e-02,2.9723e-02, -1.2300e-02],...,[-3.3147e-02, -2.1986e-02, 1.3504e-02, ..., 1.5667e-02,2.0060e-02, 1.2932e-02],[ 5.0174e-03, 2.7909e-02, -3.5111e-02, ..., 2.7326e-02,3.1136e-02, -2.1508e-02],[ 3.4995e-02, -2.9416e-02, 8.9518e-03, ..., 2.4333e-02,2.5510e-02, 3.4048e-02]], requires_gradTrue) 偏置项 Parameter containing: tensor([ 0.0235, -0.0071, -0.0277, 0.0201, 0.0285, -0.0066, 0.0244, -0.0015,-0.0274, -0.0254], requires_gradTrue)2.卷积层 卷积层是卷积神经网络中的核心层之一用于从输入数据中提取空间特征。卷积层通过滑动窗口卷积核在输入上进行局部感知并输出对应的特征图。Pytorch中的卷积层包括二维卷积层和三维卷积层分别用于处理二维数据和三维数据。 import torch import torch.nn as nn# 定义输入通道数、输出通道数和卷积核大小 in_channels 3 # 输入图像的通道数比如RGB图像的通道数为3 out_channels 10 # 输出特征图的通道数决定了卷积层的深度 kernel_size 3 # 卷积核的大小可以是一个整数或者一个元组高度宽度# 创建二维卷积层 conv_layer nn.Conv2d(in_channels, out_channels, kernel_size) # 创建一个二维卷积层对象指定输入通道数、输出通道数和卷积核大小# 打印二维卷积层的权重和偏置项 print(权重, conv_layer.weight) # 打印卷积层的权重形状为(10, 3, 3, 3)表示10个输出通道每个通道对应一个3x3的卷积核输入通道数为3 print(偏置项, conv_layer.bias) # 打印卷积层的偏置项形状为(10,)表示10个输出通道各自的偏置项权重 Parameter containing: tensor([[[[-0.1345, -0.1756, -0.1378],[-0.1873, 0.0453, 0.1870],[-0.0587, -0.1824, 0.0206]],[[-0.0236, 0.0837, -0.1119],[ 0.1802, -0.0412, 0.0246],[ 0.0555, -0.1600, -0.1051]],[[ 0.0305, -0.1235, 0.1504],[ 0.1417, -0.1083, -0.1260],[ 0.1019, 0.0467, -0.0930]]],[[[ 0.0049, 0.1599, -0.0155],[ 0.1395, 0.1167, 0.0457],[ 0.1842, 0.1533, 0.1551]],[[ 0.0357, -0.0851, 0.0223],[-0.1629, 0.1369, 0.0167],[ 0.1904, 0.0222, -0.1388]],[[-0.0846, -0.1352, -0.0039],[ 0.0290, 0.1842, -0.1837],[ 0.0431, 0.1595, -0.0067]]],[[[-0.1126, -0.0355, -0.1463],[ 0.0333, 0.0095, 0.0695],[-0.0106, -0.0312, -0.1256]],[[ 0.1589, 0.0826, 0.0012],[-0.1898, 0.0701, 0.1293],[ 0.1104, 0.1357, -0.0181]],[[-0.0141, 0.0343, 0.1184],[ 0.0223, 0.1064, 0.1161],[-0.1302, -0.0461, 0.1534]]],[[[-0.1347, 0.0752, -0.0799],[ 0.1490, 0.1549, 0.1169],[ 0.0238, -0.0565, 0.1537]],[[-0.0109, 0.1576, -0.1237],[-0.1440, -0.0062, 0.1227],[ 0.1083, 0.0711, -0.1654]],[[ 0.1691, -0.0773, -0.1273],[ 0.0252, 0.0923, 0.1173],[ 0.1610, 0.1237, 0.0340]]],[[[ 0.0421, -0.0296, -0.0942],[ 0.1319, -0.0052, 0.1092],[ 0.0359, 0.1117, -0.1803]],[[ 0.1128, 0.0074, 0.1556],[-0.1156, -0.1290, -0.0532],[-0.1897, -0.0241, 0.0173]],[[ 0.1492, 0.0639, 0.0156],[-0.1848, 0.0436, 0.1843],[ 0.1261, -0.1529, -0.0433]]],[[[-0.0377, -0.1315, 0.1441],[ 0.1290, 0.1604, 0.1032],[-0.1481, -0.0640, -0.1081]],[[-0.0525, 0.1381, -0.0980],[-0.0356, -0.1787, 0.0579],[ 0.0794, -0.0317, 0.1197]],[[ 0.0696, -0.1164, -0.1332],[-0.0522, 0.1866, -0.1177],[ 0.0478, -0.1263, -0.0446]]],[[[-0.0707, 0.0787, 0.0932],[-0.0645, -0.0981, 0.1409],[ 0.0830, -0.0724, 0.0160]],[[-0.0663, -0.1531, 0.0385],[-0.0376, -0.0028, 0.0165],[ 0.1408, 0.0061, -0.0085]],[[ 0.1485, -0.0885, -0.0300],[ 0.0784, 0.1103, -0.1027],[-0.1513, -0.1135, 0.1773]]],[[[ 0.1529, 0.0545, 0.0845],[-0.0492, 0.0263, 0.0706],[ 0.1417, -0.0234, 0.1385]],[[-0.1917, -0.1262, -0.1102],[ 0.0726, 0.1231, 0.0764],[-0.0670, 0.0726, 0.0026]],[[ 0.0701, -0.1172, -0.0528],[-0.0076, -0.0333, -0.0411],[-0.0275, -0.0982, 0.0640]]],[[[-0.1637, 0.1234, 0.1289],[-0.0831, -0.0061, 0.0587],[-0.0125, -0.1588, -0.0585]],[[ 0.1838, 0.1203, -0.1888],[-0.1113, -0.0859, 0.1053],[ 0.0857, -0.1597, 0.0186]],[[ 0.1576, -0.1528, 0.1484],[ 0.0019, 0.0216, -0.0182],[-0.1688, -0.1134, 0.1220]]],[[[ 0.1687, -0.0447, -0.0339],[-0.1022, -0.1690, 0.0198],[-0.1686, -0.1009, -0.0762]],[[ 0.0394, 0.0816, 0.0880],[ 0.0414, -0.0767, 0.1095],[ 0.1279, -0.0704, -0.0042]],[[-0.1413, 0.0231, -0.1731],[-0.1102, 0.1115, 0.1701],[-0.0567, -0.1341, 0.0511]]]], requires_gradTrue) 偏置项 Parameter containing: tensor([ 0.0481, -0.1906, -0.1884, 0.0912, -0.0207, 0.1297, -0.1344, 0.0010,-0.1730, -0.1730], requires_gradTrue)3.池化层 池化层用于减小特征图的空间维度降低模型的参数数量并增强模型的平移不变性。最大池化是最常用的池化方式它们分别选择局部区域中的最大值和平均值作为输出。 import torch import torch.nn as nn# 导入PyTorch库# 定义池化层区域大小和步幅 kernel_size 2 # 池化区域的大小可以是一个整数或者一个元组高度宽度 stride 2 # 步幅控制池化操作移动的步长# 创建池化层 pool_layer nn.MaxPool2d(kernel_size, stride) # 创建一个最大池化层对象指定池化区域的大小和步幅# 打印最大池化层的参数 print(池化区域大小, pool_layer.kernel_size) # 打印池化区域的大小形状为(2, 2)表示高度和宽度均为2的池化区域 print(步幅, pool_layer.stride) # 打印步幅形状为(2, 2)表示在高度和宽度方向上的步幅均为2 池化区域大小 2 步幅 24.循环神经网络 循环神经网络Recurrent Neural NetWork, RNN层用于处理序列数据具有记忆力和上下文感知能力。RNN层通过在时间步之间共享权重实现对序列的逐步处理并输出相应的隐藏状态。 import torch import torch.nn as nn # 定义输入特征维度、隐藏状态维度和层数 input_size 10 # 输入特征的维度也就是每个时间步的输入数据的大小 hidden_size 20 # 隐藏状态的维度决定了RNN层的输出大小 num_layers 2 # RNN层的层数决定了RNN的深度# 创建RNN层 rnn_layer nn.RNN(input_size, hidden_size, num_layers) # 创建一个RNN层对象指定输入特征维度、隐藏状态维度和层数# 打印RNN层的参数 print(输入特征维度, rnn_layer.input_size) # 打印输入特征维度即为10 print(隐藏状态维度, rnn_layer.hidden_size) # 打印隐藏状态维度即为20 print(层数, rnn_layer.num_layers) # 打印层数即为2输入特征维度 10 隐藏状态维度 20 层数 25.转置卷积层 转置卷积层也被称为反卷积层用于实现上采样操作将低纬特征图转换为高维特征图。转置卷积层通过反向卷积操作将输入特征图映射到更大的输出特征图。 import torch import torch.nn as nn# 定义输入通道数、输出通道数和卷积大小 in_channels 3 # 输入的通道数即输入特征图的深度 out_channels 16 # 输出的通道数即卷积核的个数 kernel_size 3 # 卷积核的大小可以是一个整数或者一个元组高度宽度# 创建转置卷积层 transconv_layer nn.ConvTranspose2d(in_channels, out_channels, kernel_size) # 创建一个转置卷积层对象指定输入通道数、输出通道数和卷积大小# 打印转置卷积的权重和偏置项 print(权重, transconv_layer.weight) # 打印转置卷积的权重形状为(16, 3, 3, 3)表示有16个卷积核每个卷积核的形状为(3, 3, 3) print(偏置项, transconv_layer.bias) # 打印转置卷积的偏置项形状为(16,)表示有16个偏置项每个偏置项对应一个卷积核6.归一化层 归一化层用于调整神经网络的激活值分布提升模型的收敛速度和泛化能力。常用的归一化层包括归一化和层归一化 import torch import torch.nn as nn# 定义特征维度 num_features 16 # 特征的维度即特征的深度# 创建批归一化层 bn_layer nn.BatchNorm2d(num_features) # 创建一个批归一化层对象指定特征维度# 打印批归一化层的参数 print(特征维度, bn_layer.num_features) # 打印特征维度即为16 print(均值, bn_layer.running_mean) # 打印批归一化层的均值初始化为全零 print(方差, bn_layer.running_var) # 打印批归一化层的方差初始化为全零 特征维度 16 均值 tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 方差 tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])7.激活函数层 激活函数层用于引入非线性变换增加神经网络的表达能力。常用的激活函数包括ReLU/sigmoid/Tanh等 import torch import torch.nn as nn# 创建激活函数层Relu activation_layer nn.ReLU()# 定义输入张量 input_tensor torch.randn(10)# 对输入张量进行激活函数变换 output_tensor activation_layer(input_tensor)# 打印输出张量 print(输出张量, output_tensor)输出张量 tensor([0.0000, 0.0000, 1.6909, 0.0000, 0.0000, 0.0000, 0.0000, 0.9084, 0.0000,0.0000])三、数据加载与预处理 在深度学习任务中数据的加载和预处理是非常重要的步骤。Pytorch提供了强大的数据加载和预处理工具使得我们能够高效地处理各种类型的数据。 1.数据加载 Pytorch中的数据加载主要通过torch.utils.data模块实现。该模块提供了Dataset和DataLoader两个核心类分别用于定义数据集和数据加载器Dataset类是一个抽象类用于表示数据集。我们可以继承该类并实现自定义的数据集。在自定义数据集中我们需要实现两个方法len__和__getitem. __len__返回数据集的样本数量__getitem__方法根据索引返回单个样本 import torch from torch.utils import data from torch.utils.data import Datasetclass MyDataset(data.Dataset):def __init__(self, data_list):# 初始化数据集self.data_list data_listdef __len__(self):# 返回数据集大小return len(self.data_list)def __getitem__(self, index):# 根据索引索取样本sample self.data_list[index]return sample在上述示例中MyDataset类接受一个数据列表作为输入并实现了__len__和__getitem__方法 torch.utils.data.DataLoader是Pytorch中一个重要的类用于高效加载数据集。它可以处理数据的批次化、打乱顺序、多线程数据加载等功能。 import torch.utils.data as data # 创建MyDataset实例my_dataset,它包含了一个整数列表。 my_dataset MyDataset([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 使用DataLoader类创建一个数据加载器my_dataloader它将my_dataset作为输入并将数据分成大小为4的批次并对数据进行打乱随机化。 my_dataloader data.DataLoader(my_dataset,batch_size4,shuffleTrue) # 遍历my_dataloader,打印每个批次的数据 for batch in my_dataloader:print(batch)tensor([4, 2, 5, 8]) tensor([1, 3, 9, 6]) tensor([7])torch.utils.data.Dataset和torch.utils.data.DataLoader用于加载数据集、用于对数据进行批量处理和随机化。 2.数据预处理 数据预处理是在将数据输入模型之前对数据进行的一系列操作以提高模型的性能和准确性。Pytorch提供了多种数据预处理方法包括常见的数据变换、标准化、图像增强等。以下是一些常见的数据预处理方法Tensor转换将数据转换为torch.Tensor类型是数据预处理的第一步。torch.Tensor是Pytorch中表示张量的主要数据类型数据变换将数据转换为torch.Tensor类型是数据预处理的第一步。torch.Tensor是Pytorch中表示张量的主要数据类型数据标准化数据标准化是对数据进行平均值和标准差的缩放以使得数据具有零均值和单位方差。这通常用于提高模型的收敛性和稳定性图像增强图像增强是对图像进行变换或添加噪声以增加训练数据的多样性和鲁棒性。Pytorch提供了torchvision.transforms模块中多种图像增强方法如随机裁剪、翻转、旋转等。 四、模型训练与验证 1.模型训练 Pytorch中模型训练主要包括以下几个步骤 1.准备数据首先准备好训练数据和对应的标签。可以使用torch.utils.data模块中的Dataset和DataLoader类来加载和批量处理数据2.定义模型接下来定义模型的结构。可以选择torch.nn模块中的各种层和模型来构建自己的神经网络模型3.定义损失函数为了训练模型定义损失函数来度量模型预测结果与真实标签之间的差异。可以使用torch.nn模块中的各种损失函数如均方根误差MSE、交叉熵损失等。4.定义优化器为了更新模型的参数需要选择一个优化器来优化模型的损失函数。可以使用torch.optim模块中的各种优化器如随机梯度SGD、Adam等5.训练模型在每个训练迭代中需要执行以下步骤 前向传播将输入数据通过模型得到模型的输出结果计算损失将模型的输出结果与真实标签计算损失函数的值反向传播根据损失函数的梯度计算模型参数的梯度参数更新使用优化器根据梯度信息更新模型的参数 掌握这几个步骤你就知道怎么进行模型训练了 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoadertrain_data np.arange(512) # 准备数据 train_dataset MyDataset(train_data) train_dataloader DataLoader(train_dataset, batch_size64, shuffleTrue)# 定义模型 model MyModel() # 注这里的MyModel()需要自己去写一个模型我这里没有写# 定义损失函数 loss_fn nn.CrossEntropyLoss()# 定义优化器 optimizer optim.SGD(model.parameters(), lr0.01)# 训练模型 for epoch in range(num_epochs):for batch in train_dataloader:inputs, labels batch# 前向传播outputs model(inputs)# 计算损失loss loss_fn(outputs, labels)# 反向传播optimizer.zero_grad() # 梯度清零loss.backward()# 参数更新optimizer.step()2.模型验证 # 准备验证数据 val_dataset MyDataset(val_data) val_dataloader DataLoader(val_dataset, batch_size64)# 模型验证 model.eval() # 设置模型为评估模式 with torch.no_grad(): # 禁止梯度计算for batch in val_dataloader:inputs, labels batch#前向传播outputs model(inputs)总结 以上介绍了深度学习中的神经网络以及搭建神经网络所需要的步骤。
http://www.yayakq.cn/news/2689/

相关文章:

  • 班级设计网站建设专业网站设计 网络服务
  • 为什么招聘网站做不大打开浏览器历史记录
  • 东莞做网站seo优化python人网站开发案例
  • 江西省飞宏建设工程有限公司 网站千锋培训学费多少钱
  • 建个人网站甘露园网站建设
  • 免费.网站最新域名免费网址域名
  • 一般电脑网站建设及运营多少钱企业网站开发信息
  • 做的比较好的购物网站设计师网站导航
  • 邓州建网站做门户网站用什么模板好
  • 微商网站如何做推广快速网站开发课程
  • 开发专业网站百度广告联盟标识
  • 网站需求怎么做济南润尔网站建设技术公司
  • 网站被抄袭哪里可以找到免费的源码
  • go语言做网站国内购物平台
  • 平面设计跟网站建设汽车美容网站模板
  • 网站开发网站源码创建wordpress网站
  • 个人做网站要注意什么兼职设计师在哪里接活
  • 利用git做网站备份网站空间容量
  • 长沙 网站建设品牌推荐电子商务公司招聘
  • 什么是网站标题在山东省建设监理协会网站
  • 家具展示型网站wordpress直达按钮
  • 一般做网站用什么软件黑龙江省建设信息网
  • 郑州网站推广公司咨询wordpress游戏网站模板
  • 有没有给人做简历的网站网站界面设计 考虑因素
  • 网站设计O2O平台秦皇岛公司做网站
  • 下载建设网站软件樱桃电视剧西瓜视频在线观看
  • 昌平区手机网站制作服务百度站长网站提交
  • 餐饮商城网站制作多少钱事业单位网站建设注销情况说明
  • 知名做网站公司网站后台维护一般要怎么做
  • 水泥网站营销方案怎么做个人做的网站能备案吗