亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

pytorch 自定義卷積核進行卷積操作方式

 更新時間:2019年12月30日 15:23:30   作者:月亮是藍色  
今天小編就為大家分享一篇pytorch 自定義卷積核進行卷積操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一 卷積操作:在pytorch搭建起網(wǎng)絡(luò)時,大家通常都使用已有的框架進行訓(xùn)練,在網(wǎng)絡(luò)中使用最多就是卷積操作,最熟悉不過的就是

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

通過上面的輸入發(fā)現(xiàn)想自定義自己的卷積核,比如高斯核,發(fā)現(xiàn)是行不通的,因為上面的參數(shù)里面只有卷積核尺寸,而權(quán)值weight是通過梯度一直更新的,是不確定的。

二 需要自己定義卷積核的目的:目前是需要通過一個VGG網(wǎng)絡(luò)提取特征特后需要對其進行高斯卷積,卷積后再繼續(xù)輸入到網(wǎng)絡(luò)中訓(xùn)練。

三 解決方案。使用

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)

這里注意下weight的參數(shù)。與nn.Conv2d的參數(shù)不一樣

可以發(fā)現(xiàn)F.conv2d可以直接輸入卷積的權(quán)值weight,也就是卷積核。那么接下來就要首先生成一個高斯權(quán)重了。這里不直接一步步寫了,直接輸入就行。

kernel = [[0.03797616, 0.044863533, 0.03797616],
     [0.044863533, 0.053, 0.044863533],
     [0.03797616, 0.044863533, 0.03797616]]

四 完整代碼

class GaussianBlur(nn.Module):
  def __init__(self):
    super(GaussianBlur, self).__init__()
    kernel = [[0.03797616, 0.044863533, 0.03797616],
         [0.044863533, 0.053, 0.044863533],
         [0.03797616, 0.044863533, 0.03797616]]
    kernel = torch.FloatTensor(kernel).unsqueeze(0).unsqueeze(0)
    self.weight = nn.Parameter(data=kernel, requires_grad=False)
 
  def forward(self, x):
    x1 = x[:, 0]
    x2 = x[:, 1]
    x3 = x[:, 2]
    x1 = F.conv2d(x1.unsqueeze(1), self.weight, padding=2)
    x2 = F.conv2d(x2.unsqueeze(1), self.weight, padding=2)
    x3 = F.conv2d(x3.unsqueeze(1), self.weight, padding=2)
    x = torch.cat([x1, x2, x3], dim=1)
    return x

這里為了網(wǎng)絡(luò)模型需要寫成了一個類,這里假設(shè)輸入的x也就是經(jīng)過網(wǎng)絡(luò)提取后的三通道特征圖(當(dāng)然不一定是三通道可以是任意通道)

如果是任意通道的話,使用torch.expand()向輸入的維度前面進行擴充。如下:

  def blur(self, tensor_image):
    kernel = [[0.03797616, 0.044863533, 0.03797616],
        [0.044863533, 0.053, 0.044863533],
        [0.03797616, 0.044863533, 0.03797616]]
    
    min_batch=tensor_image.size()[0]
    channels=tensor_image.size()[1]
    out_channel=channels
    kernel = torch.FloatTensor(kernel).expand(out_channel,channels,3,3)
    self.weight = nn.Parameter(data=kernel, requires_grad=False)
 
    return F.conv2d(tensor_image,self.weight,1,1)

以上這篇pytorch 自定義卷積核進行卷積操作方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pytorch查看通道數(shù) 維數(shù) 尺寸大小方式

    pytorch查看通道數(shù) 維數(shù) 尺寸大小方式

    這篇文章主要介紹了pytorch查看通道數(shù) 維數(shù) 尺寸大小方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python 類對象和實例對象動態(tài)添加方法(分享)

    python 類對象和實例對象動態(tài)添加方法(分享)

    下面小編就為大家分享一篇python 類對象和實例對象動態(tài)添加方法。具有很的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • python函數(shù)的兩種嵌套方法使用

    python函數(shù)的兩種嵌套方法使用

    本文主要介紹了python函數(shù)的兩種嵌套方法使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 基于Python實現(xiàn)骰子小游戲

    基于Python實現(xiàn)骰子小游戲

    骰子,是現(xiàn)在娛樂場所最常見的一種玩樂項目。一般骰子分兩人和兩人以上玩,而玩法有很多。本文就來用Python實現(xiàn)個骰子小游戲,感興趣的可以了解一下
    2023-02-02
  • 詳解python進行mp3格式判斷

    詳解python進行mp3格式判斷

    這篇文章主要介紹了詳解python進行mp3格式判斷,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • Python3使用騰訊云文字識別(騰訊OCR)提取圖片中的文字內(nèi)容實例詳解

    Python3使用騰訊云文字識別(騰訊OCR)提取圖片中的文字內(nèi)容實例詳解

    這篇文章主要介紹了Python3使用騰訊云文字識別(騰訊OCR)提取圖片中的文字內(nèi)容方法詳解,需要的朋友可以參考下
    2020-02-02
  • Python、 Pycharm、Django安裝詳細教程(圖文)

    Python、 Pycharm、Django安裝詳細教程(圖文)

    這篇文章主要介紹了Python、 Pycharm、Django安裝詳細教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python數(shù)據(jù)清洗中的時間格式化實現(xiàn)

    python數(shù)據(jù)清洗中的時間格式化實現(xiàn)

    本文主要介紹了python數(shù)據(jù)清洗中的時間格式化實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Python調(diào)用百度AI實現(xiàn)人像分割詳解

    Python調(diào)用百度AI實現(xiàn)人像分割詳解

    本文主要介紹了如何通過Python調(diào)用百度AI從而實現(xiàn)人像的分割與合成,文中的示例代碼對我們的工作或?qū)W習(xí)有一定的幫助,需要的朋友可以參考一下
    2021-12-12
  • Python操作Oracle數(shù)據(jù)庫的簡單方法和封裝類實例

    Python操作Oracle數(shù)據(jù)庫的簡單方法和封裝類實例

    這篇文章主要介紹了Python操作Oracle數(shù)據(jù)庫的簡單方法和封裝類,結(jié)合實例形式分析了Python簡單連接、查詢、關(guān)閉Oracle數(shù)據(jù)庫基本操作,并給出了一個Python針對Oracle各種操作的封裝類,需要的朋友可以參考下
    2018-05-05

最新評論