《PyTorch深度學習實踐》第十二講循環神經網絡基礎

一、RNN簡介

1、RNN網絡最大的特點就是可以處理序列特征,就是我們的一組動態特征。比如,我們可以通過將前三天每天的特征(是否下雨,是否有太陽等)輸入到網絡,從而來預測第四天的天氣。
???????我們可以看RNN的網絡結構如下:

二、RNN cell用法

import torchbatch_size = 1 # 批處理大小
seq_len = 3 # 序列長度
input_size = 4 # 輸入維度
hidden_size = 2 # 隱藏層維度cell = torch.nn.RNNCell(input_size=input_size, hidden_size=hidden_size)# (seq, batch, features)
dataset = torch.randn(seq_len, batch_size, input_size)
print(dataset)
hidden = torch.zeros(batch_size, hidden_size)
print(hidden)for idx, input in enumerate(dataset):print( '=' * 20, idx, '=' * 20)print( 'Input size: ', input.shape)hidden = cell(input, hidden)print( 'outputs size: ', hidden.shape)print(hidden)

三、RNN用法

import torchbatch_size = 1 # 批處理大小
seq_len = 3 # 序列長度
input_size = 4 # 輸入維度
hidden_size = 2 # 隱藏層維度
num_layers = 4  # 隱藏層數量cell = torch.nn.RNN(input_size=input_size, hidden_size=hidden_size, num_layers=num_layers)# (seqLen, batchSize, inputSize)
inputs = torch.randn(seq_len, batch_size, input_size)
hidden = torch.zeros(num_layers, batch_size, hidden_size)
out, hidden = cell(inputs, hidden)print( 'Output size:', out.shape)
print( 'Output:', out)
print( 'Hidden size: ', hidden.shape)
print( 'Hidden: ', hidden)

四、Embedding

把input變為稠密的數據

代碼:

import torch# parameters
num_class = 4
input_size = 4
hidden_size = 8
embedding_size = 10
num_layers = 2
batch_size = 1
seq_len = 5# 準備數據集
idx2char = ['e', 'h', 'l', 'o']
x_data = [[1, 0, 2, 2, 3]]  # (batch, seq_len)
y_data = [3, 1, 2, 3, 2]    # (batch * seq_len)inputs = torch.LongTensor(x_data)   # Input should be LongTensor: (batchSize, seqLen)
labels = torch.LongTensor(y_data)   # Target should be LongTensor: (batchSize * seqLen)# 構建模型
class Model(torch.nn.Module):def __init__(self):super(Model, self).__init__()self.emb = torch.nn.Embedding(input_size, embedding_size)self.rnn = torch.nn.RNN(input_size=embedding_size, hidden_size=hidden_size, num_layers=num_layers, batch_first=True)self.fc = torch.nn.Linear(hidden_size, num_class)def forward(self, x):hidden = torch.zeros(num_layers, x.size(0), hidden_size)x = self.emb(x)  # (batch, seqLen, embeddingSize)x, _ = self.rnn(x, hidden)  # 輸出(𝒃𝒂𝒕𝒄𝒉𝑺𝒊𝒛𝒆, 𝒔𝒆𝒒𝑳𝒆𝒏, hidden_size)x = self.fc(x)  # 輸出(𝒃𝒂𝒕𝒄𝒉𝑺𝒊𝒛𝒆, 𝒔𝒆𝒒𝑳𝒆𝒏, 𝒏𝒖𝒎𝑪𝒍𝒂𝒔𝒔)return x.view(-1, num_class)  # reshape to use Cross Entropy: (𝒃𝒂𝒕𝒄𝒉𝑺𝒊𝒛𝒆×𝒔𝒆𝒒𝑳𝒆𝒏, 𝒏𝒖𝒎𝑪𝒍𝒂𝒔𝒔)net = Model()# 損失函數和優化器
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(net.parameters(), lr=0.05)# 訓練模型
for epoch in range(15):optimizer.zero_grad()outputs = net(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()_, idx = outputs.max(dim=1)idx = idx.data.numpy()print('Predicted: ', ''.join([idx2char[x] for x in idx]), end='')print(', Epoch [%d/15] loss = %.3f' % (epoch + 1, loss.item()))

?運行結果:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711943.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python實現雙向鏈表:從基礎到應用

一、引言 雙向鏈表是一種比單向鏈表更復雜的數據結構,每個節點除了包含數據和指向下一個節點的指針外,還包含一個指向前一個節點的指針。這種結構使得我們可以從鏈表的任何節點開始,向前或向后遍歷鏈表。 目錄 一、引言 二、節點定義 三、…

OPPO打響AI手機第一槍

明敏 發自 凹非寺 量子位 | 公眾號 QbitAI 2024開年,AI趨勢依舊高歌猛進。 一邊,Sora爆火成為現象級AIGC應用,帶動AI再度成為春節后全民熱議的第一話題。另一邊,手機廠商開始大舉All in AI,“放棄傳統智能手機”、“…

【Qt】Sqlite數據庫加密

1. 加密方式 對數據庫文件加密。既不會暴露表結構,也不會暴露數據細節。 2. 加密工具(QtCipherSqlitePlugin) 用于密碼 SQLite 的 Qt 插件,它基于 SQLite 源和 wxWidget 中的 wxSQLite3插件github地址:https://gith…

gpt-3.5-turbo與星火認知大模型v3.5回答對比

創建kernel // Create a kernel with OpenAI chat completionKernel kernel Kernel.CreateBuilder().AddOpenAIChatCompletion(modelId:"使用的模型id" ,apiKey: "APIKey").Build();使用訊飛星火認知大模型的話,可以參考我這一篇文章&#xff…

突破編程_C++_高級教程(正則表達式)

1 正則表達式的概念 正則表達式,又稱規則表達式,(Regular Expression,在代碼中常簡寫為 regex 、regexp 或 RE),是一種文本模式,包括普通字符(例如,a 到 z 之間的字母&a…

c++函數指針 回調函數

目錄 函數指針 ?編輯 實例 函數指針作為某個函數的參數 實例 std::function輕松實現回調函數 綁定一個函數 作為回調函數 作為函數入參 函數指針 函數指針是指向函數的指針變量。 通常我們說的指針變量是指向一個整型、字符型或數組等變量,而函數指針是指向…

證券相關業務知識

證券相關業務知識 LOF交易回售業務觸發條件 股票代碼區分融券專戶競價交易與大宗交易一級市場和二級市場ETF交易融資融券交易(兩融)融券強平轉托管簿記和預簿記期權權證股票板塊 LOF交易 LOF,即上市型開放式基金(Listed Open-End…

【Java】UWB高精度工業定位系統項目源代碼

目錄 UWB技術原理 優勢 1. 高精度: 2. 抗干擾能力強: 3. 定位范圍廣: 4. 實時性強: 應用前景 定位系統源碼功能介紹 實時定位: 軌跡回放: 區域管理: 巡檢管理: 數據可視化分析&…

BAT等大廠必問技術面試題,2024Android開發面試解答之設計模式

IT行業薪水高,這是眾所周知的,所以很多人大學都選擇IT相關專業,即使非該專業的人,畢業了也想去一個培訓機構鍍鍍金,進入這一行業。 但是有關這個行業35歲就退休的說法,也一直盛傳。 加上這幾年不斷有各大…

回溯 Leetcode 47 全排列II

全排列II 給定一個可包含重復數字的序列 nums ,按任意順序 返回所有不重復的全排列。 Leetcode 47 學習記錄自代碼隨想錄 示例 1: 輸入:nums [1,1,2] 輸出: [[1,1,2], [1,2,1], [2,1,1]] 示例 2: 輸入&#xff1…

Unity3d Shader篇(十)— 漸變紋理

文章目錄 前言一、什么是Unlity漸變紋理Shader?1. 漸變紋理Shader工作原理2. 漸變紋理?3. 漸變紋理的優缺點優點:缺點: 4. 漸變紋理例圖 二、使用步驟1. Shader 屬性定義2. SubShader 設置3. 渲染 Pass4. 定義結構體和頂點著色器函…

Linux下的GDB

1.前言 GDB是Linux下非常好用且強大的調試工具。GDB可以調試C、C、Go、java、 objective-c、PHP等語言。對于一名Linux下工作的c/c程序員,GDB是必不可少的工具 2.GDB使用幫助 GDB命令擁有較多內部命令。在gdb命令提示符下輸入help可以查看所有內部命令及使用說明 …

Mediapipe筆記:安裝Mediapipe+手部檢測+動作識別

Mediapipe 安裝Mediapipe 打開Anaconda prompt檢查環境和python運行環境是否一致(默認base環境,不用切換)輸入命令行pip install mediapipe0.9.1.0 -i https://pypi.tuna.tsinghua.edu.cn/simple Mediapope完成手部關鍵點檢測 手部檢測 創建對象(加載模型參數)…

(二十二)devops持續集成開發——jenkins服務代理Agent搭建

前言 在Jenkins 中,代理(Agent)是一種用于執行構建、部署和其他任務的計算節點。代理節點可以是物理機器、虛擬機或容器,它們負責接收 Jenkins 主控節點委派的任務并執行這些任務。通過使用代理節點,可以有效地分擔Je…

Redis內存淘汰策略詳解

Redis作為一個高性能的鍵值對數據庫,被廣泛應用于各種需要快速響應和持久存儲的場景中。然而,由于其內存存儲的特性,當Redis的內存使用達到其最大配置限制時,就需要有一種策略來管理內存的使用,以避免內存溢出。這就是…

NLP Seq2Seq模型

🍨 本文為[🔗365天深度學習訓練營學習記錄博客🍦 參考文章:365天深度學習訓練營🍖 原作者:[K同學啊 | 接輔導、項目定制]\n🚀 文章來源:[K同學的學習圈子](https://www.yuque.com/mi…

深入理解Linux線程(LWP):概念、結構與實現機制(2)

🎬慕斯主頁:修仙—別有洞天 ??今日夜電波:會いたい—Naomile 1:12━━━━━━?💟──────── 4:59 🔄 ?? ? ?? ? &a…

Vue3+vite打包后頁面空白問題

vite.config.js vite.config.js 增加 base: ./ import { fileURLToPath, URL } from node:url import { defineConfig } from vite import vue from vitejs/plugin-vue// https://vitejs.dev/config/ export default defineConfig({base: ./,resolve: {alias: {: fileURLToPath…

解析短視頻美顏SDK:美顏美型技術的深度剖析

美顏并非簡單的濾鏡疊加,而是依托著先進的圖像處理和人工智能技術,才能夠達到如此出色的效果。本文將深入探討短視頻美顏SDK背后的技術原理和實現方法,從而揭示其美顏美型技術的深度剖析。 一、美顏SDK的基本原理 美顏SDK的基本原理是通過對…

maven 包管理平臺-01-maven 入門介紹 + Maven、Gradle、Ant、Ivy、Bazel 和 SBT 的詳細對比表格

拓展閱讀 maven 包管理平臺-01-maven 入門介紹 Maven、Gradle、Ant、Ivy、Bazel 和 SBT 的詳細對比表格 maven 包管理平臺-02-windows 安裝配置 mac 安裝配置 maven 包管理平臺-03-maven project maven 項目的創建入門 maven 包管理平臺-04-maven archetype 項目原型 ma…