使用PyTorch/TensorFlow搭建简单全连接神经网络

 更新时间:2025年02月27日 08:52:29   作者:gs80140  
在本篇博客中,我们将介绍如何使用两大深度学习框架——PyTorch 和 TensorFlow,构建一个简单的全连接神经网络,该网络包含输入层、一个隐藏层和输出层,适合初学者理解神经网络的基本构建模块及训练流程,需要的朋友可以参考下

网络结构概述

我们的全连接神经网络(Fully Connected Neural Network,FCNN)由以下部分构成:

  • 输入层:接收数据特征向量(例如,长度为 10 的向量)。
  • 隐藏层:通过一个全连接层将输入进行非线性映射,通常会使用激活函数(如 ReLU)来增加模型的表达能力。
  • 输出层:根据具体任务输出预测结果,例如回归任务输出单个连续值。

这种结构虽然简单,但能帮助我们理解前向传播、反向传播及梯度下降等基本概念。

1. 使用 PyTorch 构建网络

PyTorch 提供了灵活的动态计算图和简洁的 API,非常适合快速原型开发。下面是一个完整示例:

import torch
import torch.nn as nn
import torch.optim as optim
 
# 定义一个简单的全连接神经网络
class SimpleFCNN(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(SimpleFCNN, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size)  # 输入层到隐藏层
        self.relu = nn.ReLU()                           # 激活函数
        self.fc2 = nn.Linear(hidden_size, output_size)  # 隐藏层到输出层
 
    def forward(self, x):
        out = self.fc1(x)
        out = self.relu(out)
        out = self.fc2(out)
        return out
 
# 超参数设置
input_size = 10      # 输入特征数量
hidden_size = 5      # 隐藏层节点数
output_size = 1      # 输出节点数
learning_rate = 0.001
num_epochs = 100
 
# 实例化模型、定义损失函数和优化器
model = SimpleFCNN(input_size, hidden_size, output_size)
criterion = nn.MSELoss()  # 均方误差损失,用于回归问题
optimizer = optim.Adam(model.parameters(), lr=learning_rate)
 
# 构造一些模拟数据
x_train = torch.randn(100, input_size)
y_train = torch.randn(100, output_size)
 
# 训练模型
for epoch in range(num_epochs):
    outputs = model(x_train)
    loss = criterion(outputs, y_train)
 
    optimizer.zero_grad()  # 梯度清零
    loss.backward()        # 反向传播
    optimizer.step()       # 更新参数
 
    if (epoch + 1) % 10 == 0:
        print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}')

解析:

  • 模型定义:我们创建了一个继承自 nn.Module 的类 SimpleFCNN,其中 nn.Linear 用于构建全连接层,nn.ReLU 作为激活函数。
  • 训练循环:每个 epoch 中,我们计算模型输出与真实标签之间的均方误差(MSE),然后利用 optimizer 对参数进行梯度下降更新。

2. 使用 TensorFlow 构建网络

TensorFlow 通过 Keras 接口提供了直观且高层次的 API 来搭建模型,适合快速搭建原型。下面是使用 TensorFlow 的示例代码:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
 
# 超参数设置
input_size = 10      # 输入特征数量
hidden_size = 5      # 隐藏层节点数
output_size = 1      # 输出节点数
learning_rate = 0.001
num_epochs = 100
batch_size = 10
 
# 构建顺序模型
model = Sequential([
    Dense(hidden_size, activation='relu', input_shape=(input_size,)),  # 输入层到隐藏层
    Dense(output_size)                                                 # 输出层
])
 
# 编译模型:指定优化器和损失函数(这里依然使用均方误差)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=learning_rate),
              loss='mse')
 
# 构造一些模拟数据
import numpy as np
x_train = np.random.randn(100, input_size)
y_train = np.random.randn(100, output_size)
 
# 训练模型
history = model.fit(x_train, y_train, epochs=num_epochs, batch_size=batch_size, verbose=2)

解析:

  • 模型构建:我们使用 Sequential 模型,添加了一个带 ReLU 激活函数的全连接层,以及一个输出层。
  • 模型编译:在编译时选择了 Adam 优化器和 MSE 损失函数。
  • 模型训练:调用 model.fit 函数开始训练,Keras 会自动管理训练过程及日志输出。

总结

本博客展示了如何使用 PyTorch 和 TensorFlow 两种不同的深度学习框架构建一个简单的全连接神经网络。两种实现虽然在 API 设计和风格上有所不同,但核心思想是一致的:

  • 网络结构:输入层、隐藏层和输出层的搭建。
  • 前向传播:数据通过层层传递得到输出。
  • 损失函数与优化:计算输出与真实标签之间的误差,并利用优化器更新网络参数。

通过这两个示例,读者可以选择自己更熟悉的框架进行实验,同时也能对比两种框架的差异。希望这篇博客能帮助大家更好地理解全连接神经网络的搭建与训练过程,迈出深度学习实践的第一步!

到此这篇关于使用PyTorch/TensorFlow搭建简单全连接神经网络的文章就介绍到这了,更多相关PyTorch TensorFlow搭建神经网络内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python实现生成对角矩阵和对角块矩阵

    使用Python实现生成对角矩阵和对角块矩阵

    这篇文章主要为大家详细介绍了如何使用Python实现生成对角矩阵和对角块矩阵,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • Python 图像对比度增强的几种方法(小结)

    Python 图像对比度增强的几种方法(小结)

    这篇文章主要介绍了Python 图像对比度增强的几种方法(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • python实现全盘扫描搜索功能的方法

    python实现全盘扫描搜索功能的方法

    今天小编就为大家分享一篇python实现全盘扫描搜索功能的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 非常简单的Python识别图片验证码实现过程

    非常简单的Python识别图片验证码实现过程

    这篇文章主要介绍了Python验证码识别实现过程,只需要几行代码就可以实现,过程非常简单,有需要的朋友可以借鉴参考下,希望可以有所帮助
    2021-09-09
  • 使用Python编写一个粘贴python源代码就能运行的工具

    使用Python编写一个粘贴python源代码就能运行的工具

    以下是一个使用wxPython模块创建带有Memo(文本输入框)和保存按钮的GUI程序示例,点击保存按钮后将Memo内容保存到指定路径下的文件,并提供运行按钮以执行指定的Python脚本,需要的朋友可以参考下
    2025-04-04
  • python列表的特点分析

    python列表的特点分析

    在本篇文章里小编个大家整理的是一篇关于python列表的特点分析内容总结,有需要的朋友们可以学习下。
    2021-08-08
  • Python实现桶排序与快速排序算法结合应用示例

    Python实现桶排序与快速排序算法结合应用示例

    这篇文章主要介绍了Python实现桶排序与快速排序算法结合应用,结合实例形式分析了Python快速排序及桶排序结合应用的相关实现技巧,需要的朋友可以参考下
    2017-11-11
  • django迁移文件migrations的实现

    django迁移文件migrations的实现

    这篇文章主要介绍了django迁移文件migrations的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python机器学习库之Scikit-learn基本用法详解

    Python机器学习库之Scikit-learn基本用法详解

    Scikit-learn 是 Python 中最著名的机器学习库之一,它提供了大量实用的机器学习算法以及相关的工具,可以方便我们进行数据挖掘和数据分析,在这篇文章中,我们将介绍 Scikit-learn 的基本使用,包括如何导入数据、预处理数据、选择和训练模型,以及评估模型的性能
    2023-07-07
  • Python 标准库zipfile将文件夹加入压缩包的操作方法

    Python 标准库zipfile将文件夹加入压缩包的操作方法

    Python zipfile 库可用于压缩/解压 zip 文件. 本文介绍一下如何创建压缩包,对Python zipfile压缩包相关知识感兴趣的朋友一起看看吧
    2021-09-09

最新评论