博客
关于我
torch笔记六 | 搭建一个简单的与运算神经网络
阅读量:328 次
发布时间:2019-03-04

本文共 1621 字,大约阅读时间需要 5 分钟。

与运算神经网络的搭建与训练

任务目标

搭建一个简单的与运算(AND)神经网络,使用PyTorch框架进行训练,熟悉神经网络的搭建流程。

设计步骤

1. 导入必要的库

在Python环境中安装并导入PyTorch和NumPy库。NumPy用于数据生成,PyTorch用于神经网络搭建和训练。

import torchimport numpy as npfrom torch import nn

2. 构建输入集和理想输出集

使用NumPy生成四个训练样本,分别是(0,0)、(0,1)、(1,0)、(1,1)。对应的理想输出为0、0、0、1。将这些数据转换为PyTorch的Tensor变量进行训练。

# 生成输入数据矩阵x = np.mat('0 0; 0 1; 1 0; 1 1')x = torch.tensor(x).float()  # 将输入转换为浮点型Tensor# 生成理想输出y = np.mat('0; 0; 0; 1')y = torch.tensor(y).float()  # 将输出转换为浮点型Tensor

3. 搭建神经网络

使用PyTorch的nn.Sequential构建一个简单的网络,包含输入层、激活函数层和输出层。

# 定义网络结构class MyNet(nn.Module):    def __init__(self):        super(MyNet, self).__init__()        # 输入层:2个输入节点,8个隐藏节点        self.fc1 = nn.Linear(2, 8)        # 激活函数层:ReLU        self.relu = nn.ReLU()        # 隐藏层2:8个输入节点,1个输出节点        self.fc2 = nn.Linear(8, 1)        # 输出层:Sigmoid激活函数        self.sigmoid = nn.Sigmoid()    def forward(self, x):        # 前向传播        x = self.fc1(x)        x = self.relu(x)        x = self.fc2(x)        x = self.sigmoid(x)        return x# 初始化网络myNet = MyNet()

4. 设置优化器

使用随机梯度下降(SGD)优化器,设置学习率为0.05。

# 定义优化器optimizer = torch.optim.SGD(myNet.parameters(), lr=0.05)

5. 设置损失函数

使用均方误差(MSE)作为损失函数,用于衡量实际输出与理想输出的差异。

# 定义损失函数loss_func = nn.MSELoss()

6. 训练网络

运行3000次训练循环,逐步优化网络参数。

# 训练循环for epoch in range(3000):    # 前向传播    outputs = myNet(x)    # 计算损失    loss = loss_func(outputs, y)    # 清除梯度    optimizer.zero_grad()    # 反向传播    loss.backward()    # 优化参数    optimizer.step()

7. 测试结果

输出训练后的输入数据和实际输出结果。

# 显示训练结果print("输入数据:")print(x)print("\n输出结果:")print(myNet(x).data)

运行结果

通过训练,网络能够正确识别与运算结果。输入为(0,0)时输出为0,输入为(0,1)时输出为0,输入为(1,0)时输出为0,输入为(1,1)时输出为1,表明网络训练效果良好。

转载地址:http://yznq.baihongyu.com/

你可能感兴趣的文章
Python函数运行的可执行文件的终端输出如何以一般方式静音?
查看>>
Python+Pytest+Allure+Git+Jenkins接口自动化框架
查看>>
python+pytest接口自动化 —— 参数关联
查看>>
python+pytest接口自动化 —— 参数关联
查看>>
Python+pytest接口自动化 —— 接口测试基础
查看>>
python+pytest接口自动化 —— 自动化用例编写思路 (使用pytest编写一个测试脚本)
查看>>
Python+pytest接口自动化之cookie绕过登录(保持登录状态)
查看>>
python+pytest接口自动化:接口测试
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
python+requests+unittest执行自动化接口测试!
查看>>
Python+Requests编码识别Bug
查看>>
python函数编写_[零基础学python]传说中的函数编写条规
查看>>
Python+selenium —— UI自动化之鼠标操作
查看>>
python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
查看>>
Python+Selenium+Threading进行兼容性测试
查看>>
Python+selenium+unittest的GUI自动化框架实现
查看>>
python函数拟合不规则曲线_Python计算&绘图——曲线拟合问题(转)
查看>>
python函数定义的基本格式_零基础学python-2.19 定义函数、调用函数与默认参数
查看>>
Python+Selenium之数据驱动测试的实现
查看>>