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

Python關于維卷積的理解

 更新時間:2023年02月02日 09:57:41   作者:靜靜喜歡大白  
這篇文章主要介紹了Python關于維卷積的理解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

關于維卷積的理解

功能

一維卷積一般用于處理文本數(shù)據(jù),常用語自然語言處理中,輸入一般是文本經(jīng)過embedding的二維數(shù)據(jù)。

定義

tf.layers.conv1d(
inputs,
filters,
kernel_size,
strides=1,
padding='valid',
data_format='channels_last',
dilation_rate=1,
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=tf.zeros_initializer(),
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
trainable=True,
name=None,
reuse=None
)

參數(shù)

重要參數(shù)介紹:

  • inputs:輸入tensor, 維度(batch_size, seq_length, embedding_dim) 是一個三維的tensor;其中,batch_size指每次輸入的文本數(shù)量;seq_length指每個文本的詞語數(shù)或者單字數(shù);embedding_dim指每個詞語或者每個字的向量長度;例如每次訓練輸入2篇文本,每篇文本有100個詞,每個詞的向量長度為20,那input維度即為(2, 100, 20)。
  • filters:過濾器(卷積核)的數(shù)目
  • kernel_size:卷積核的大小,卷積核本身應該是二維的,這里只需要指定一維,因為第二個維度即長度與詞向量的長度一致,卷積核只能從上往下走,不能從左往右走,即只能按照文本中詞的順序,也是列的順序。

舉例

代碼

# coding: utf-8
import tensorflow as tf
 
num_filters = 2
kernel_size = 2
batch_size = 1
seq_length = 4
embedding_dim = 5
 
embedding_inputs = tf.constant(-1.0, shape=[batch_size, seq_length, embedding_dim], dtype=tf.float32)
 
with tf.name_scope("cnn"):
    conv = tf.layers.conv1d(embedding_inputs, num_filters, kernel_size, name='conv')
 
session = tf.Session()
session.run(tf.global_variables_initializer())
 
print (session.run(conv).shape)

輸出為(1, 3, 2)。

原理

首先,batch_size = 1即為一篇文本,seq_length = 4定義文本中有4個字(假設以字為單位),embedding_dim = 5定義一個字的向量長度為5,這里初始化每個字的向量都為[1, 1, 1, 1, 1],num_filters = 2定義有兩個過濾器,kernel_size = 2定義每個卷積核的寬度為2,長度即為字向量長度5。

一個卷積核通過卷積操作之后得到(4-2+1)*1(seq_length - kernel_size + 1)即3*1的向量,一共有兩個卷積核,所以卷積出來的數(shù)據(jù)維度(1, 3, 2)其中1指一篇文本。

圖解

后續(xù)

經(jīng)過卷積之后得到2個feature maps,分別經(jīng)過pooling層之后,兩個3*1的向量就變成兩個1*1的常數(shù),在把這兩個1*1的常數(shù)拼接在一起變成2*1向量,之后就可以進行下一步比如全連接或者softmax操作了。

Python編寫一維數(shù)組的卷積

之前在網(wǎng)上查閱關于數(shù)組卷積的代碼時,發(fā)現(xiàn)有很多C++代碼,但并沒有多少關于python的代碼,故在此將自己所編寫的代碼分享出來,希望能一起探討研究。

實現(xiàn)思路如下

1、先將短數(shù)組反轉

2、第一階段,此時只有短數(shù)據(jù)的(前)部分元素與長數(shù)據(jù)相乘求和

3、第二階段,此時短數(shù)據(jù)的所有元素與長數(shù)據(jù)相乘求和

4、第三階段,此時短數(shù)據(jù)的(后)部分數(shù)據(jù)與長數(shù)據(jù)相乘求和

具體應用公式網(wǎng)上有很多,計算過程并不復雜,但比較麻煩的是關于循環(huán)變量的邊界值的設置,稍有不慎就有可能超出索引值。我的辦法是先在草稿紙上寫兩個數(shù)組,元素可以少取幾個,然后寫出具體卷積的過程數(shù)據(jù),尤其不同階段的過渡的位置,細心找出規(guī)律,然后就可以編寫具體代碼了。

代碼入下:

    import matplotlib.pyplot as plt
    import numpy as np

#階躍信號
def up(x):
    for i in range(len(x)):
        if x[i] < 0:
            y[i] = 0
        else:
            y[i] = 1
    return y

x= np.arange(-10,10,0.1)
y = np.zeros(len(x))

y = up(x)

plt.plot(y)
plt.show()



#高斯濾波器
def gauss(x,s):
    
    g=1/(((2*np.pi)**0.5)*s)*np.exp(-x**2/2/(s**2))
    return g

sample = np.arange(-10,10,1)
g = gauss(sample,10/3)

plt.plot(g)
plt.show()

#卷積一
f_1 = np.zeros(len(y)+len(g)-1)

#翻轉
g = list(g)
g.reverse()

for i in range(len(f_1)):
    #長數(shù)據(jù)卷積部分短數(shù)據(jù)(前半部分)
    if i < (len(g)-1):
        for j in range(i+1):
            f_1[i] = y[j]*g[i-j]+f_1[i]
    #長數(shù)據(jù)卷積整個短數(shù)據(jù)
    elif i < (len(y)-1):
        for j in range(i-len(g)+1,i+1):
            f_1[i] = y[j]*g[i-j]+f_1[i]
    #長數(shù)據(jù)卷積部分短數(shù)據(jù)(后半部分)
    else:
        for j in range(i-len(g)+1,len(y)):
            f[i] = y[j]*g[i-j]+f[i]
           
               

            
#顯示
plt.plot(f_1)
plt.show()


#卷積二

#存放卷積后的結果
f_2 = np.zeros(len(y)+len(g)-1)

#翻轉
g = list(g)
g.reverse()

for i in range(len(f_2)):
    
    #根據(jù)卷積的不同階段設置閾值
    t_left = i-len(g)+1
    t_right = i+1
    
    #卷積的前半部分j的初始值
    if t_left < 0:
        t_left = 0
    #卷積的后半部分j的上限
    if t_right > len(y):
        t_right = len(y)
    
    for j in range(t_left,t_right):

        f_2[i] = y[j]*g[i-j] + f_2[i]

#顯示        
plt.plot(f_2)
plt.show()

兩種設置閾值的方式,但思想都是一樣的。

總結

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

相關文章

  • python爬蟲之自動登錄與驗證碼識別

    python爬蟲之自動登錄與驗證碼識別

    這篇文章主要為大家詳細介紹了python爬蟲之自動登錄與驗證碼識別,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 如何解決.cuda()加載用時很長的問題

    如何解決.cuda()加載用時很長的問題

    這篇文章主要介紹了如何解決.cuda()加載用時很長的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python jieba庫分詞模式實例用法

    Python jieba庫分詞模式實例用法

    在本篇文章里小編給大家分享的是一篇關于Python jieba庫分詞模式實例用法,有興趣的朋友們可以學習參考下。
    2021-01-01
  • Python實現(xiàn)求最大公約數(shù)及判斷素數(shù)的方法

    Python實現(xiàn)求最大公約數(shù)及判斷素數(shù)的方法

    這篇文章主要介紹了Python實現(xiàn)求最大公約數(shù)及判斷素數(shù)的方法,涉及Python算數(shù)運算的相關技巧,需要的朋友可以參考下
    2015-05-05
  • python自動統(tǒng)計zabbix系統(tǒng)監(jiān)控覆蓋率的示例代碼

    python自動統(tǒng)計zabbix系統(tǒng)監(jiān)控覆蓋率的示例代碼

    這篇文章主要介紹了python自動統(tǒng)計zabbix系統(tǒng)監(jiān)控覆蓋率的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack)

    numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack)

    這篇文章主要介紹了numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Python的內(nèi)存泄漏及gc模塊的使用分析

    Python的內(nèi)存泄漏及gc模塊的使用分析

    這篇文章主要介紹了Python的內(nèi)存泄漏及gc模塊的使用分析,有助于讀者進一步了解Python的內(nèi)存分配及回收機制,增強代碼編寫的安全意識,需要的朋友可以參考下
    2014-07-07
  • 一文搞懂Python的函數(shù)傳參機制

    一文搞懂Python的函數(shù)傳參機制

    最近寫了Python函數(shù)的功能,犯了一些錯誤。所以本文主要和大家一起梳理下Python函數(shù)的傳參機制,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-07-07
  • Python中shutil模塊的學習筆記教程

    Python中shutil模塊的學習筆記教程

    shutil模塊是一種高層次的文件操作工具,類似于高級API,主要強大之處在于其對文件的復制與刪除操作更是比較支持好。下面這篇文章主要介紹了Python中shutil模塊的相關教程,需要的朋友可以參考學習,下面來一起看看吧。
    2017-04-04
  • python如何通過twisted搭建socket服務

    python如何通過twisted搭建socket服務

    這篇文章主要介紹了python如何通過twisted搭建socket服務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02

最新評論