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

你可能感兴趣的文章
null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
查看>>
Number Sequence(kmp算法)
查看>>
Numix Core 开源项目教程
查看>>
numpy
查看>>
Numpy 入门
查看>>
NumPy 库详细介绍-ChatGPT4o作答
查看>>
NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
查看>>
numpy 或 scipy 有哪些可能的计算可以返回 NaN?
查看>>
numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
查看>>
numpy 数组与矩阵的乘法理解
查看>>
NumPy 数组拼接方法-ChatGPT4o作答
查看>>
numpy 用法
查看>>
Numpy 科学计算库详解
查看>>
Numpy.fft.fft和numpy.fft.fftfreq有什么不同
查看>>
numpy.linalg.norm(求范数)
查看>>
Numpy.ndarray对象不可调用
查看>>
Numpy.VisibleDeproationWarning:从不整齐的嵌套序列创建ndarray
查看>>
Numpy:按多个条件过滤行?
查看>>
Numpy:条件总和
查看>>
numpy、cv2等操作图片基本操作
查看>>