欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用PyTorch/TensorFlow搭建簡(jiǎn)單全連接神經(jīng)網(wǎng)絡(luò)

 更新時(shí)間:2025年02月27日 08:52:29   作者:gs80140  
在本篇博客中,我們將介紹如何使用兩大深度學(xué)習(xí)框架——PyTorch 和 TensorFlow,構(gòu)建一個(gè)簡(jiǎn)單的全連接神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)包含輸入層、一個(gè)隱藏層和輸出層,適合初學(xué)者理解神經(jīng)網(wǎng)絡(luò)的基本構(gòu)建模塊及訓(xùn)練流程,需要的朋友可以參考下

網(wǎng)絡(luò)結(jié)構(gòu)概述

我們的全連接神經(jīng)網(wǎng)絡(luò)(Fully Connected Neural Network,F(xiàn)CNN)由以下部分構(gòu)成:

  • 輸入層:接收數(shù)據(jù)特征向量(例如,長(zhǎng)度為 10 的向量)。
  • 隱藏層:通過(guò)一個(gè)全連接層將輸入進(jìn)行非線性映射,通常會(huì)使用激活函數(shù)(如 ReLU)來(lái)增加模型的表達(dá)能力。
  • 輸出層:根據(jù)具體任務(wù)輸出預(yù)測(cè)結(jié)果,例如回歸任務(wù)輸出單個(gè)連續(xù)值。

這種結(jié)構(gòu)雖然簡(jiǎn)單,但能幫助我們理解前向傳播、反向傳播及梯度下降等基本概念。

1. 使用 PyTorch 構(gòu)建網(wǎng)絡(luò)

PyTorch 提供了靈活的動(dòng)態(tài)計(jì)算圖和簡(jiǎn)潔的 API,非常適合快速原型開(kāi)發(fā)。下面是一個(gè)完整示例:

import torch
import torch.nn as nn
import torch.optim as optim
 
# 定義一個(gè)簡(jiǎn)單的全連接神經(jīng)網(wǎng)絡(luò)
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()                           # 激活函數(shù)
        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
 
# 超參數(shù)設(shè)置
input_size = 10      # 輸入特征數(shù)量
hidden_size = 5      # 隱藏層節(jié)點(diǎn)數(shù)
output_size = 1      # 輸出節(jié)點(diǎn)數(shù)
learning_rate = 0.001
num_epochs = 100
 
# 實(shí)例化模型、定義損失函數(shù)和優(yōu)化器
model = SimpleFCNN(input_size, hidden_size, output_size)
criterion = nn.MSELoss()  # 均方誤差損失,用于回歸問(wèn)題
optimizer = optim.Adam(model.parameters(), lr=learning_rate)
 
# 構(gòu)造一些模擬數(shù)據(jù)
x_train = torch.randn(100, input_size)
y_train = torch.randn(100, output_size)
 
# 訓(xùn)練模型
for epoch in range(num_epochs):
    outputs = model(x_train)
    loss = criterion(outputs, y_train)
 
    optimizer.zero_grad()  # 梯度清零
    loss.backward()        # 反向傳播
    optimizer.step()       # 更新參數(shù)
 
    if (epoch + 1) % 10 == 0:
        print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}')

解析:

  • 模型定義:我們創(chuàng)建了一個(gè)繼承自 nn.Module 的類(lèi) SimpleFCNN,其中 nn.Linear 用于構(gòu)建全連接層,nn.ReLU 作為激活函數(shù)。
  • 訓(xùn)練循環(huán):每個(gè) epoch 中,我們計(jì)算模型輸出與真實(shí)標(biāo)簽之間的均方誤差(MSE),然后利用 optimizer 對(duì)參數(shù)進(jìn)行梯度下降更新。

2. 使用 TensorFlow 構(gòu)建網(wǎng)絡(luò)

TensorFlow 通過(guò) Keras 接口提供了直觀且高層次的 API 來(lái)搭建模型,適合快速搭建原型。下面是使用 TensorFlow 的示例代碼:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
 
# 超參數(shù)設(shè)置
input_size = 10      # 輸入特征數(shù)量
hidden_size = 5      # 隱藏層節(jié)點(diǎn)數(shù)
output_size = 1      # 輸出節(jié)點(diǎn)數(shù)
learning_rate = 0.001
num_epochs = 100
batch_size = 10
 
# 構(gòu)建順序模型
model = Sequential([
    Dense(hidden_size, activation='relu', input_shape=(input_size,)),  # 輸入層到隱藏層
    Dense(output_size)                                                 # 輸出層
])
 
# 編譯模型:指定優(yōu)化器和損失函數(shù)(這里依然使用均方誤差)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=learning_rate),
              loss='mse')
 
# 構(gòu)造一些模擬數(shù)據(jù)
import numpy as np
x_train = np.random.randn(100, input_size)
y_train = np.random.randn(100, output_size)
 
# 訓(xùn)練模型
history = model.fit(x_train, y_train, epochs=num_epochs, batch_size=batch_size, verbose=2)

解析:

  • 模型構(gòu)建:我們使用 Sequential 模型,添加了一個(gè)帶 ReLU 激活函數(shù)的全連接層,以及一個(gè)輸出層。
  • 模型編譯:在編譯時(shí)選擇了 Adam 優(yōu)化器和 MSE 損失函數(shù)。
  • 模型訓(xùn)練:調(diào)用 model.fit 函數(shù)開(kāi)始訓(xùn)練,Keras 會(huì)自動(dòng)管理訓(xùn)練過(guò)程及日志輸出。

總結(jié)

本博客展示了如何使用 PyTorch 和 TensorFlow 兩種不同的深度學(xué)習(xí)框架構(gòu)建一個(gè)簡(jiǎn)單的全連接神經(jīng)網(wǎng)絡(luò)。兩種實(shí)現(xiàn)雖然在 API 設(shè)計(jì)和風(fēng)格上有所不同,但核心思想是一致的:

  • 網(wǎng)絡(luò)結(jié)構(gòu):輸入層、隱藏層和輸出層的搭建。
  • 前向傳播:數(shù)據(jù)通過(guò)層層傳遞得到輸出。
  • 損失函數(shù)與優(yōu)化:計(jì)算輸出與真實(shí)標(biāo)簽之間的誤差,并利用優(yōu)化器更新網(wǎng)絡(luò)參數(shù)。

通過(guò)這兩個(gè)示例,讀者可以選擇自己更熟悉的框架進(jìn)行實(shí)驗(yàn),同時(shí)也能對(duì)比兩種框架的差異。希望這篇博客能幫助大家更好地理解全連接神經(jīng)網(wǎng)絡(luò)的搭建與訓(xùn)練過(guò)程,邁出深度學(xué)習(xí)實(shí)踐的第一步!

到此這篇關(guān)于使用PyTorch/TensorFlow搭建簡(jiǎn)單全連接神經(jīng)網(wǎng)絡(luò)的文章就介紹到這了,更多相關(guān)PyTorch TensorFlow搭建神經(jīng)網(wǎng)絡(luò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論