Pytorch中的masked_fill基本知識詳解
1. 基本知識
基本的原理知識如下:
輸入張量和掩碼:
masked_fill 接受兩個主要參數(shù):一個輸入張量和一個布爾掩碼
掩碼的形狀必須與輸入張量相同,True 表示需要填充的位置,F(xiàn)alse 表示保持原值
掩碼操作:
在執(zhí)行 masked_fill 操作時,函數(shù)會檢查掩碼中每個元素的值
如果掩碼對應的位置為 True,則在輸出張量中填充指定的值;
如果為 False,則保留輸入張量中對應位置的值
輸出結果:
最終生成的新張量包含了在掩碼位置上被替換的值,其余位置保持原樣
在代碼邏輯上:
創(chuàng)建掩碼:
mask 是一個布爾張量,標識了哪些位置需要填充:
[[False, True, False], [True, False, True], [False, False, True]]
執(zhí)行 masked_fill:
當調用 tensor.masked_fill(mask, -1) 時,PyTorch 會遍歷掩碼中的每個元素:對于 mask 中的每個 True 值,tensor 在對應位置的值會被替換為 -1,對于 False 值,保持原值不變
masked_fill 操作是基于 C/C++ 的實現(xiàn),因此在處理大規(guī)模數(shù)據(jù)時性能較高。常用于深度學習模型中的數(shù)據(jù)預處理,比如在填充序列、處理缺失值或標記特定條件的數(shù)據(jù)時
2. Demo
Demo 1: 基本用法
import torch
# 創(chuàng)建一個 3x3 的張量
tensor = torch.tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 創(chuàng)建一個掩碼,標記要填充的位置
mask = torch.tensor([[False, True, False],
[True, False, True],
[False, False, True]])
# 使用 masked_fill 填充掩碼位置為 -1
result = tensor.masked_fill(mask, -1)
print("原始張量:")
print(tensor)
print("\n填充后的張量:")
print(result)
截圖如下:

Demo 2: 與條件結合使用
import torch
# 創(chuàng)建一個隨機張量
tensor = torch.randn(3, 3)
# 創(chuàng)建掩碼:標記負值的位置
mask = tensor < 0
# 將負值位置填充為 0
result = tensor.masked_fill(mask, 0)
print("原始張量:")
print(tensor)
print("\n填充后的張量 (負值填充為 0):")
print(result)截圖如下:

Demo 3: 結合計算
import torch
# 創(chuàng)建一個張量
tensor = torch.tensor([[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])
# 創(chuàng)建掩碼:標記大于 50 的位置
mask = tensor > 50
# 用 999 填充大于 50 的位置
result = tensor.masked_fill(mask, 999)
print("原始張量:")
print(tensor)
print("\n填充后的張量 (大于 50 的位置填充為 999):")
print(result)截圖如下:

到此這篇關于Pytorch中的masked_fill基本知識的文章就介紹到這了,更多相關Pytorch masked_fill內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python中pandas的dataframe過濾數(shù)據(jù)方法
這篇文章主要介紹了Python中pandas的dataframe過濾數(shù)據(jù)方法,Pandas是另外一個用于處理高級數(shù)據(jù)結構和數(shù)據(jù)分析的Python庫,Pandas是基于Numpy構建的一種工具,需要的朋友可以參考下2023-07-07
pyinstaller打包單文件時--uac-admin選項不起作用怎么辦
這篇文章主要介紹了pyinstaller打包單文件時--uac-admin選項不起作用怎么辦,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04
python使用標準庫根據(jù)進程名如何獲取進程的pid詳解
Python有一套很有用的標準庫(standard library)。標準庫會隨著Python解釋器,一起安裝在你的電腦中的,所以下面這篇文章主要給大家介紹了關于python使用標準庫根據(jù)進程名如何獲取進程pid的相關資料,需要的朋友可以參考下。2017-10-10

