首页
/
每日頭條
/
圖文
/
torch模型僅更新部分參數
torch模型僅更新部分參數
更新时间:2026-06-14 09:56:18

torch模型僅更新部分參數(關于Torch中的scatter)1

scatter_ 和 one hot

看了很多博客,中國人寫博客有一個特點就是複制來複制去,根本沒有講到重點,好了廢話不多扯,今天講下 scatter_ 函數。

操作一:

import torch # 導入 torch模塊,這裡操作的都是張量數據 src = torch.arange(1, 11).reshape((2, 5)) # 這裡創建一個 2行5列的數據 print(src) # 打印出來 tensor([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])

上面這個是準備數據,是一個兩行五列的數據。再創建一個索引數據

index = torch.tensor([[0, 1, 2, 0, 2]]) print(index) tensor([[0, 1, 2, 0, 2]])

在這之前都是很簡單的,相比讀者肯定能看到,無非就是兩個數據,請耐心往下看

result_1 = torch.zeros(3, 5, dtype=src.dtype) # 創建一個3行5列的數據全是0 print(result_1) tensor([[0, 0, 0, 0 0], [0, 0 0, 0, 0], [0, 0, 0, 0, 0]])

解析來就是使用 scatter_函數: 也就是根據相關索引,把result_1的指定位置填充下

result = result_1.scatter_(0, index, src)

這裡是什麼意思呢, 0 表示按列來處理,result_1 是需要被更改的數據,index是索引位置, src數用來填充的數據,舉例子: 如上面描述:

result_1 = tensor([[0, 0, 0, 0 0],

[0, 0 0, 0, 0],

[0, 0, 0, 0, 0]])

index = tensor([[0, 1, 2, 0, 2]])

tensor([[ 1, 2, 3, 4, 5],

[ 6, 7, 8, 9, 10]])

第一個參數 0 表示按列來處理

索引第1個值為0,這表示第1列的第1個數據設置為scr中的第2個數據

ensor([[1, 0, 0, 0 0],

[0, 0 0, 0, 0],

[0, 0, 0, 0, 0]])

索引第2個值為1,這表示第2列的第2個數據設置為scr中的第2個數據

ensor([[1, 0, 0, 0 0],

[0, 2 0, 0, 0],

[0, 0, 0, 0, 0]])

索引第3個值為2,這表示第3列的第3個數據設置為scr中的第3個數據

ensor([[1, 0, 0, 0 0],

[0, 2 0, 0, 0],

[0, 0, 3, 0, 0]])

索引第4個值為0,這表示第4列的第1個數據設置為scr中的第4個數據

ensor([[1, 0, 0, 4 0],

[0, 2 0, 0, 0],

[0, 0, 3, 0, 0]])

索引第5個值為2,這表示第5列的第3個數據設置為scr中的第5個數據

ensor([[1, 0, 0, 4 0],

[0, 2 0, 0, 0],

[0, 0, 3, 0, 5]])

以上就是詳細的計算流程

操作2:

idx = torch.tensor([[0, 1, 2, 3,4]]) last = torch.zeros(3, 5, dtype=src.dtype).scatter_(dim=1, index=idx, value=2)

這裡第一步我相信大家都熟悉,就是創建一個數據而已,這裡我們理解為索引數據

1、torch.zeros(3, 5, dtype=src.dtype). 表示的是創建一個3行5列的數據矩陣,全是0

tensor([[0, 0, 0, 0 0],

[0, 0 0, 0, 0],

[0, 0, 0, 0, 0]])

2、dim=1,表示是按行計算

3、value,表示相應的位置上設置為某個值

idx = torch.tensor([[0, 1, 2, 3,4]])

表示的是第一行的第 0 1 2 3 4 的位置上全是設置為2,也就是

tensor([[2, 2, 2, 2, 2],

[0, 0, 0, 0, 0],

[0, 0, 0, 0, 0]])

當然,我相信某些人還是一臉懵逼,再繼續往下看

idx = torch.tensor([[0, 1, 2, 3,4],[0,0,0,0,4]]) last = torch.zeros(3, 5, dtype=src.dtype).scatter_(dim=1, index=idx, value=2)

這裡我們看到idx為 torch.tensor([[0, 1, 2, 3,4],[0,0,0,0,4]])

這個idx有兩行,那麼他對應的也是 torch.zeros(3, 5, dtype=src.dtype)中的兩行數據,

[0, 1, 2, 3,4] 表示的是第一行的第 0 1 2 3 4 的位置上全是設置為2

[0,0,0,0,4]]表示的是第二行的第 0 、4 的位置上設置為2,其他地方不變

因此整體數據變成了

tensor([[2, 2, 2, 2, 2],

[2, 0, 0, 0, 2],

[0, 0, 0, 0, 0]])

好了,這個函數介紹到此為止,希望能幫到大家

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
上海首套房契稅交多少錢(上海首套房契稅優惠繼續實施)
上海首套房契稅交多少錢(上海首套房契稅優惠繼續實施)
     9月1日起,《契稅法》正式施行。   關于之前的上海住房契稅優惠是否繼續?成為近期大家重點關注的話題。終于,财政部官網最新公告為我們揭開了這個答案。   8月30日,财政部稅政司網站發布了《關于契稅法實施後有關優惠政策銜接問題的公告》(财政部 稅務總局公告2021年第29号),《公告》明确了《中華人民共和國契稅法》實施後繼續執行的契稅優惠政策。  ...
2026-06-14
上坂堇配音龍女(知名聲優上坂堇加入)
上坂堇配音龍女(知名聲優上坂堇加入)
  美食拟人手遊《食之契約》本周公開了全新飨靈角色,受到了玩家們的廣泛關注和轉發,特别還邀請了知名聲優上坂堇加入為它配音,讓我們來看看《食之契約》缇爾菈大陸的大陸中這次加入了什麼樣的新飨靈角色呢?   【祈願庇佑 禦節料理】      美味的禦節料理相當于是日本人的年夜飯,它會用多層的盒子裝置,每一層裝置的不同的食物擁有着不同的寓意。第一層主要會有一些象征喜...
2026-06-14
德語日常會話用語(德語學習我很性感)
德語日常會話用語(德語學習我很性感)
  Emil:Wo warst du? (你去哪了?)   Ich bin in die Toilette gegangen.:小明   Emil:Was zur Hölle?! (WTF?)   其實小明想說:Ich bin auf die Toilette gegangen. ——我剛去廁所了。。。   但是表達的實際意思卻是:我剛去了馬桶裡。     ...
2026-06-14
康熙小s唱歌(又可以看小S手撕嘉賓了)
康熙小s唱歌(又可以看小S手撕嘉賓了)
  01   2015年10月,那個說永不缺席的蔡康永發出一條辭别《康熙來了》的微博。      而随後小S也在微博回應說“沒有你便不完整,所以親愛的,我們就共進退吧!”      就這樣2876集、12年陪伴的《康熙來了》開始了它毫無預警的告别。   12年死忠粉任泉說“沒了,才知道什麼是真沒了。”   姚晨說“多麼希望你明天說,這隻是你和大家開的一個玩笑...
2026-06-14
棗莊市東湖公園在哪裡(東湖公園彼岸花競相開放)
棗莊市東湖公園在哪裡(東湖公園彼岸花競相開放)
  棗莊市市中區:東湖公園彼岸花競相開放眼下,在棗莊市市中區東湖公園道路兩旁,如果你用心就會看到,一片片、一簇簇生在枝頭鮮紅的花朵正在陸續開放。它排列如傘,絲光閃閃、花瓣朝後反卷,形成燈籠狀,從花瓣中心迸射出幾支長長的蕊絲,仿佛煙花一般,十分豔麗。               這種美麗的花叫中國石蒜,為東亞特有植物,人們通常稱為彼岸花。石蒜屬植物葉片于花前或...
2026-06-14
Copyright 2023-2026 - www.tftnews.com All Rights Reserved