日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

torch.nn.Embedding

發布時間:2023/11/28 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 torch.nn.Embedding 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在pytorch里面實現word embedding是通過一個函數來實現的:nn.Embedding

1 2 3 4 5 6 7 8 9 10 11 12 13 # -*- coding: utf-8 -*- import numpy?as?np import torch import torch.nn?as?nn import torch.nn.functional?as?F from?torch.autograd import Variable word_to_ix = {'hello': 0,?'world': 1} embeds = nn.Embedding(2, 5) hello_idx = torch.LongTensor([word_to_ix['hello']]) hello_idx = Variable(hello_idx) hello_embed = embeds(hello_idx) print(hello_embed)

?這就是我們輸出的hello這個詞的word embedding,代碼會輸出如下內容,接下來我們解析一下代碼:

1 2 3 Variable containing: ?0.4606? 0.6847 -1.9592? 0.9434? 0.2316 [torch.FloatTensor of size 1x5]

?

首先我們需要word_to_ix = {'hello': 0, 'world': 1},每個單詞我們需要用一個數字去表示他,這樣我們需要hello的時候,就用0來表示它。

接著就是word embedding的定義nn.Embedding(2, 5),這里的2表示有2個詞,5表示5維度,其實也就是一個2x5的矩陣,所以如果你有1000個詞,每個詞希望是100維,你就可以這樣建立一個word embeddingnn.Embedding(1000, 100)。如何訪問每一個詞的詞向量是下面兩行的代碼,注意這里的詞向量的建立只是初始的詞向量,并沒有經過任何修改優化,我們需要建立神經網絡通過learning的辦法修改word embedding里面的參數使得word embedding每一個詞向量能夠表示每一個不同的詞。

1 2 hello_idx = torch.LongTensor([word_to_ix['hello']]) hello_idx = Variable(hello_idx)

?

接著這兩行代碼表示得到一個Variable,它的值是hello這個詞的index,也就是0。這里要特別注意一下我們需要Variable,因為我們需要訪問nn.Embedding里面定義的元素,并且word embeding算是神經網絡里面的參數,所以我們需要定義Variable

hello_embed = embeds(hello_idx)這一行表示得到word embedding里面關于hello這個詞的初始詞向量,最后我們就可以print出來。

總結

以上是生活随笔為你收集整理的torch.nn.Embedding的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。