博客
关于我
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/

你可能感兴趣的文章
oracle 嵌套表 例子,Oracle之嵌套表(了解)
查看>>
Oracle 常用命令
查看>>
Oracle 常用的V$视图脚本(二)
查看>>
Oracle 并行原理与示例总结
查看>>
oracle 并集 时间_Oracle集合运算符 交集 并集 差集
查看>>
Oracle 序列sequence 开始于某个值(10)执行完nextval 发现查出的值比10还小的解释
查看>>
ORACLE 异常错误处理
查看>>
oracle 执行一条查询语句,把数据加载到页面或者前台发生的事情
查看>>
oracle 批量生成建同义词语句和付权语句
查看>>
oracle 抓包工具,shell 安装oracle和pfring(抓包) 及自动环境配置
查看>>
Oracle 拆分以逗号分隔的字符串为多行数据
查看>>
Oracle 排序中使用nulls first 或者nulls last 语法
查看>>
oracle 插入date日期类型的数据、插入从表中查出的数据,使用表中的默认数据
查看>>
Oracle 操作笔记
查看>>
oracle 数据库 安装 和优化
查看>>
oracle 数据库dg搭建规范1
查看>>
Oracle 数据库常用SQL语句(1)
查看>>
Oracle 数据库特殊查询总结
查看>>
Oracle 数据类型
查看>>
Oracle 数据自动备份 通过EXP备份
查看>>