# softmax 將實數值轉換為概率值
# 使用keras介面如何操作
# import 匯入模組,每次使用模組中的函式都要是定是哪個模組。
# from…import * 匯入模組,每次使用模組中的函式,直接使用函式就可以了;
# 注因為已經知道該函式是那個模組中的了。
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers ,sequential
tf.__version__
# 輸入x
# [batch, in_height, in_width, in_channels]
x = tf.random.normal([1
,5,5
,3])
# 卷積核
# [filter_height * filter_width * in_channels, output_channels]
# 卷積核通道數要與輸入的通道數一致
# output_channels如果是1代表單卷積核,如果是其他數字代表多卷積核
w = tf.random.normal([3
,3,3
,6])
# 進行卷積操作
# strides 步長
out1 = tf.nn.conv2d(
input
=x, filters=w,
strides=[1
,1,1
,1],
padding=
'same'
)# same 在step=1的時候,會得出輸出與輸入相同大小對映
# same step不等於1之後會按照公式進行補零(就是計算二維卷積結果的公式)會在四周補零
# valid 不夠的不在補零計算,直接捨棄
conlayer = tf.keras.layers.conv2d(filters=
4,kernel_size=
3)
out = conlayer(x)
out
快速卷積運算 分塊卷積運算
對於實時系統來說,如果兩個較長的序列做卷積運算,等待資料準備好需要較長的時間,會增加系統的處理時延。並且卷積運算的計算複雜度與序列的長度為正相關。因此,我們考慮將長序列分割為若干個短序列,將長序列的卷積運算轉換為短序列之間的運算。一般會有如下兩種情況 1 對於兩個序列 並且 可以將序列 fori 0...
形象理解卷積(卷積運算為何要翻轉)
在卷積的定義中 我知道問乙個概念的定義就好像問 媽媽 為什麼要叫 媽媽 一樣。但我始終覺得這樣的定義有些彆扭。想知道這樣做背後的意義。兩個函式,翻轉其中乙個,再滑動求積分,叫卷積 convultion 不翻轉就滑動求積分,叫做互相關 cross correlation 如果其中之一是偶函式,那麼卷積...
深度學習基礎 卷積 加速的卷積運算
convolution在gpu上如何實現,文中介紹了三種方法 缺點 這種實現呢需要處理許多的corner case。文中介紹cuda convnet2是實現了該種方法,該種方法在不同取值的卷積引數空間效率不一,比如batch size 128,效率很高,但是如果batch size 64,效率比較低...