抽奖怎么做网站,中国建设教育协会证书查询网站,从什么网站找做app的代码,如何查询网站建设时间目录
一、实验介绍 二、实验环境
1. 配置虚拟环境
2. 库版本介绍
三、实验内容
0. 导入必要的工具包
1. 逻辑回归Logistic类
a. 构造函数__init__
b. __call__(self, x)方法
c. 前向传播forward
d. 反向传播backward
2. 模型训练
3. 代码整合 一、实验介绍
实现逻…
目录
一、实验介绍 二、实验环境
1. 配置虚拟环境
2. 库版本介绍
三、实验内容
0. 导入必要的工具包
1. 逻辑回归Logistic类
a. 构造函数__init__
b. __call__(self, x)方法
c. 前向传播forward
d. 反向传播backward
2. 模型训练
3. 代码整合 一、实验介绍
实现逻辑回归模型Logistic类 实现前向传播forward实现反向传播backward 二、实验环境 本系列实验使用了PyTorch深度学习框架相关操作如下
1. 配置虚拟环境
conda create -n DL python3.7
conda activate DL
pip install torch1.8.1cu102 torchvision0.9.1cu102 torchaudio0.8.1 -f https://download.pytorch.org/whl/torch_stable.htmlconda install matplotlib conda install scikit-learn
2. 库版本介绍
软件包本实验版本目前最新版matplotlib3.5.33.8.0numpy1.21.61.26.0python3.7.16scikit-learn0.22.11.3.0torch1.8.1cu1022.0.1torchaudio0.8.12.0.2torchvision0.9.1cu1020.15.2 三、实验内容
ChatGPT 前馈神经网络Feedforward Neural Network是一种常见的人工神经网络模型也被称为多层感知器Multilayer PerceptronMLP。它是一种基于前向传播的模型主要用于解决分类和回归问题。 前馈神经网络由多个层组成包括输入层、隐藏层和输出层。它的名称前馈源于信号在网络中只能向前流动即从输入层经过隐藏层最终到达输出层没有反馈连接。 以下是前馈神经网络的一般工作原理 输入层接收原始数据或特征向量作为网络的输入每个输入被表示为网络的一个神经元。每个神经元将输入加权并通过激活函数进行转换产生一个输出信号。 隐藏层前馈神经网络可以包含一个或多个隐藏层每个隐藏层由多个神经元组成。隐藏层的神经元接收来自上一层的输入并将加权和经过激活函数转换后的信号传递给下一层。 输出层最后一个隐藏层的输出被传递到输出层输出层通常由一个或多个神经元组成。输出层的神经元根据要解决的问题类型分类或回归使用适当的激活函数如Sigmoid、Softmax等将最终结果输出。 前向传播信号从输入层通过隐藏层传递到输出层的过程称为前向传播。在前向传播过程中每个神经元将前一层的输出乘以相应的权重并将结果传递给下一层。这样的计算通过网络中的每一层逐层进行直到产生最终的输出。 损失函数和训练前馈神经网络的训练过程通常涉及定义一个损失函数用于衡量模型预测输出与真实标签之间的差异。常见的损失函数包括均方误差Mean Squared Error和交叉熵Cross-Entropy。通过使用反向传播算法Backpropagation和优化算法如梯度下降网络根据损失函数的梯度进行参数调整以最小化损失函数的值。 前馈神经网络的优点包括能够处理复杂的非线性关系适用于各种问题类型并且能够通过训练来自动学习特征表示。然而它也存在一些挑战如容易过拟合、对大规模数据和高维数据的处理较困难等。为了应对这些挑战一些改进的网络结构和训练技术被提出如卷积神经网络Convolutional Neural Networks和循环神经网络Recurrent Neural Networks等。 本系列为实验内容对理论知识不进行详细阐释
咳咳其实是没时间整理待有缘之时回来填坑 0. 导入必要的工具包
import torch 1. 逻辑回归Logistic类
a. 构造函数__init__ def __init__(self):self.inputs Noneself.outputs Noneself.params None 初始化了类的成员变量self.inputs、self.outputs和self.params它们分别用于保存输入、输出和参数。 b. __call__(self, x)方法 __call__(self, x)方法使得该类的实例可以像函数一样被调用。它调用了forward(x)方法将输入的x传递给前向传播方法。 def __call__(self, x):return self.forward(x) c. 前向传播forward def forward(self, inputs):outputs 1.0 / (1.0 torch.exp(-inputs))self.outputs outputsreturn outputs forward(self, inputs)方法执行逻辑回归的前向传播。它接受输入inputs作为参数并通过逻辑回归的公式计算输出值outputs。最后将计算得到的输出保存在self.outputs中并返回输出值。 d. 反向传播backward def backward(self, outputs_gradsNone):if outputs_grads is None:outputs_grads torch.ones(self.outputs.shape)outputs_grad_inputs torch.multiply(self.outputs, (1.0 - self.outputs))return torch.multiply(outputs_grads, outputs_grad_inputs) backward(self, outputs_gradsNone)方法执行逻辑回归的反向传播。
接受一个可选的参数outputs_grads用于传递输出的梯度。如果没有提供outputs_grads则默认为全1的张量表示对输出的梯度都为1。根据逻辑回归的导数公式可以将输出值与1-输出值相乘然后再乘以传入的梯度值得到输入的梯度。返回计算得到的输入梯度。 2. 模型训练
act Logistic()
x torch.tensor([3,3,4,2])
y act(x)z act.backward()
print(z)创建一个Logistic的实例act传入张量x进行前向传播得到输出张量y调用act.backward()进行反向传播得到输入x的梯度将结果打印输出。
tensor([0.0452, 0.0452, 0.0177, 0.1050]) 3. 代码整合
# 导入必要的工具包
import torchclass Logistic():def __init__(self):self.inputs Noneself.outputs Noneself.params Nonedef __call__(self, x):return self.forward(x)def forward(self, inputs):outputs 1.0 / (1.0 torch.exp(-inputs))self.outputs outputsreturn outputsdef backward(self, outputs_gradsNone):if outputs_grads is None:outputs_grads torch.ones(self.outputs.shape)outputs_grad_inputs torch.multiply(self.outputs, (1.0 - self.outputs))return torch.multiply(outputs_grads, outputs_grad_inputs)act Logistic()
x torch.tensor([3,3,4,2])
y act(x)z act.backward()
print(z) 注意 本实验仅实现了逻辑回归的前向传播和反向传播部分缺少了模型的参数更新和训练部分。完整的逻辑回归需要进一步编写训练循环、损失函数和优化器等部分欲知后事如何请听下回分解。