234人参与 • 2025-02-27 • 神经网络
我们的全连接神经网络(fully connected neural network,fcnn)由以下部分构成:
这种结构虽然简单,但能帮助我们理解前向传播、反向传播及梯度下降等基本概念。
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 作为激活函数。optimizer 对参数进行梯度下降更新。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 激活函数的全连接层,以及一个输出层。model.fit 函数开始训练,keras 会自动管理训练过程及日志输出。本博客展示了如何使用 pytorch 和 tensorflow 两种不同的深度学习框架构建一个简单的全连接神经网络。两种实现虽然在 api 设计和风格上有所不同,但核心思想是一致的:
通过这两个示例,读者可以选择自己更熟悉的框架进行实验,同时也能对比两种框架的差异。希望这篇博客能帮助大家更好地理解全连接神经网络的搭建与训练过程,迈出深度学习实践的第一步!
到此这篇关于使用pytorch/tensorflow搭建简单全连接神经网络的文章就介绍到这了,更多相关pytorch tensorflow搭建神经网络内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论