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

pytorch如何實現(xiàn)多個矩陣拼接

 更新時間:2023年09月09日 08:59:59   作者:Arxan_hjw  
這篇文章主要介紹了pytorch如何實現(xiàn)多個矩陣拼接問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

pytorch多個矩陣拼接

問題描述

在處理數(shù)據(jù)的時候遇到一個for循環(huán)中生成多個【max_len*max_len】的二維矩陣,現(xiàn)需要將這些矩陣在第一維上進行堆疊,形成一個新的【batch * max_len * max_len】三維矩陣

實現(xiàn)過程

a = torch.ones(3, 3) ?# 假設生成的矩陣形狀為3*3
c = [] ?# 定義一個空列表用于存儲矩陣
for i in range(3):
? ? a = a
? ? c.append(a.unsqueeze(0))
# 使用cat方法可之間實現(xiàn)該操作
c = torch.cat(c, dim=0) ?
print(c.size())

輸出c的形狀:

torch.Size([3, 3, 3])

pytorch中torch.cat()矩陣拼接的用法

深度學習模型里的輸出的東西還是有點搞的。torch.cat()的用處還是蠻大的。

下面直接舉例子理解。

一維拼接

import torch
a = torch.Tensor([1, 2, 3])
b = a * 2
c = torch.cat((a, b), dim=0) ?# dim=-1為取最后一維。這里只有一維-1和0是一樣的
print(a.shape)
print(c.shape)
print(c)

二維拼接

dim就是選擇哪一維進行拼接,dim=-1就表示最后一維進行拼接,這個也很好理解,索引-1一般都指最后一個字符

a = torch.Tensor([[1, 2]])
b = a * 2
c1 = torch.cat((a, b), dim=0)
c2 = torch.cat((a, b), dim=1) ?# 這里第二維是最后一維,dim=-1和dim=1是一樣的
print("a:", a)
print("a.shape:", a.shape)
print("c1:", c1)
print("c1.shape:", c1.shape)
print("c2:", c2)
print("c2.shape:", c2.shape)

當你使用pytorch深度學習模型時,隱藏層不止一層,最好將所有的隱藏層都利用起來,那么就需要進行隱藏層的拼接了。

假設隱藏層h_n.shape為(2,3,4)表示有2個隱藏層,batch_size為3(3個樣本一起訓練),隱藏層大小為4。由于隱藏層都包含了一定的信息,那么我們都利用起來應該效果比較好(聽學長說很多論文都證明過了),那么每個樣本對應的隱藏層應該都拼接起來用即2*4的大小。這樣就需要用到拼接了。

h_n = torch.randn(2, 3, 4) ?# 假設隱藏層
# 下面三種寫法是一個意思
feature_map = torch.cat([h_n[i] for i in range(h_n.shape[0])], dim=-1) ?# 索引第i個整元素,元素里剩下的維度缺省是全取的意思
feature_map1 = torch.cat([h_n[i, :, :] for i in range(h_n.shape[0])], dim=-1)
feature_map2 = torch.cat([h_n[i] for i in range(h_n.shape[0])], dim=1)
print(feature_map.shape)
print(feature_map1.shape)
print(feature_map2.shape)

隱藏層拼接完之后就可以放進全連接層然后出結果了。

由于LSTM的現(xiàn)在時刻的輸出是前一個時刻的隱藏層和現(xiàn)在時刻的輸入經(jīng)過softmax得到的,而現(xiàn)在時刻的隱藏層是 現(xiàn)在時刻的輸出*tanh(現(xiàn)在時刻的細胞狀態(tài))得到的,現(xiàn)在時刻的隱藏層也是包含了現(xiàn)在輸入的信息的,因此直接放入全連接然后出結果就好了,至于模型的輸出可以不用,直接用隱藏層也是可以的吧?;蛘哒f隱藏層就相當于包含著各自特征信息,輸出層也是基于隱藏層來的,因此我們深度學習模型里直接用隱藏層就是在直接用那些特征吧(強行理解一波)

用模型的輸出或者模型隱藏層應該都是可以得出結果的,目前對我來說,效果應該都差不多。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python使用functools實現(xiàn)注解同步方法

    Python使用functools實現(xiàn)注解同步方法

    這篇文章主要介紹了Python使用functools實現(xiàn)注解同步方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python操作列表的常用方法分享

    Python操作列表的常用方法分享

    這篇文章主要介紹了Python操作列表的常用方法,需要的朋友可以參考下
    2014-02-02
  • Python實現(xiàn)拉格朗日插值法的示例詳解

    Python實現(xiàn)拉格朗日插值法的示例詳解

    插值法是一種數(shù)學方法,用于在已知數(shù)據(jù)點(離散數(shù)據(jù))之間插入數(shù)據(jù),以生成連續(xù)的函數(shù)曲線,而格朗日插值法是一種多項式插值法。本文就來用Python實現(xiàn)拉格朗日插值法,希望對大家有所幫助
    2023-02-02
  • 使用python tkinter實現(xiàn)各種個樣的撩妹鼠標拖尾效果

    使用python tkinter實現(xiàn)各種個樣的撩妹鼠標拖尾效果

    這篇文章主要介紹了使用python tkinter實現(xiàn)各種個樣的撩妹鼠標拖尾效果,本文通過實例代碼,給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Ubuntu下Anaconda和Pycharm配置方法詳解

    Ubuntu下Anaconda和Pycharm配置方法詳解

    這篇文章主要為大家詳細介紹了Ubuntu下Anaconda和Pycharm配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python易忽視知識點小結

    Python易忽視知識點小結

    這篇文章主要介紹了Python易忽視知識點,實例分析了Python中容易被忽視的常見操作技巧,需要的朋友可以參考下
    2015-05-05
  • python可迭代類型遍歷過程中數(shù)據(jù)改變會不會報錯

    python可迭代類型遍歷過程中數(shù)據(jù)改變會不會報錯

    這篇文章主要介紹了python可迭代類型遍歷過程中數(shù)據(jù)改變會不會報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python決策樹預測學生成績等級實現(xiàn)詳情

    python決策樹預測學生成績等級實現(xiàn)詳情

    這篇文章主要為介紹了python決策樹預測學生成績等級,使用決策樹完成學生成績等級預測,可選取部分或全部特征,分析參數(shù)對結果的影響,并進行調(diào)參優(yōu)化,決策樹可視化進行調(diào)參優(yōu)化分析
    2022-04-04
  • Python編寫一個多線程的12306搶票程序的示例

    Python編寫一個多線程的12306搶票程序的示例

    對于很多人來說,搶購火車票人們成了一個令人頭疼的問題,本文主要介紹了Python編寫一個多線程的12306搶票程序的示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Python字典操作得力助手Get()函數(shù)的使用

    Python字典操作得力助手Get()函數(shù)的使用

    在Python編程中,get()函數(shù)是字典(Dictionary)對象中非常有用的函數(shù),本文將詳細介紹get()函數(shù)的用法及示例代碼,感興趣的可以了解一下
    2023-11-11

最新評論