W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
注意:接受 Tensor 參數(shù)的函數(shù)也可以接受被 tf.convert_to_tensor 接受的任何內(nèi)容.
激活操作提供用于神經(jīng)網(wǎng)絡的不同類型的非線性。這些包括平滑的非線性(sigmoid,tanh,elu,softplus,和softsign),連續(xù)的,但不是到處可微函數(shù)(relu,relu6,crelu和relu_x),和隨機正規(guī)化(dropout)。
所有激活操作應用于分量,并產(chǎn)生與輸入張量相同形狀的張量。
卷積運算在一批圖像上掃描2維濾鏡,將濾鏡應用到適當大小的每個圖像的每個窗口。不同的操作在通用和特定過濾器之間取舍:
注意,盡管這些操作被稱為“卷積”,但它們嚴格地說是“互相關”,因為濾波器與輸入窗口組合而不反轉濾波器。
過濾器應用于與過濾器相同大小的圖像補丁,并根據(jù) strides 參數(shù)進行分段。strides = [1, 1, 1, 1] 在每個偏移處將濾鏡應用到貼片,strides = [1, 2, 2, 1] 將濾鏡應用到每個維度中的每個其他圖像補丁等。
忽略通道,假設4維 input 具有shape [batch, in_height, in_width, ...],4維 filter具有shape [filter_height, filter_width, ...],則卷積運算的空間語義如下:首先,根據(jù)選擇的填充方案 'SAME' 或 'VALID' 輸出大小和計算填充像素。對于 'SAME' 填充,輸出高度和寬度計算如下:
out_height = ceil(float(in_height) / float(strides[1]))
out_width = ceil(float(in_width) / float(strides[2]))
沿高度和寬度應用的總填充量計算如下:
if (in_height % strides[1] == 0):
pad_along_height = max(filter_height - strides[1], 0)
else:
pad_along_height = max(filter_height - (in_height % strides[1]), 0)
if (in_width % strides[2] == 0):
pad_along_width = max(filter_width - strides[2], 0)
else:
pad_along_width = max(filter_width - (in_width % strides[2]), 0)
最后,頂部,底部,左側和右側的填充是:
pad_top = pad_along_height // 2
pad_bottom = pad_along_height - pad_top
pad_left = pad_along_width // 2
pad_right = pad_along_width - pad_left
請注意,除以2意味著可能會出現(xiàn)兩側的填充(頂部與底部,右側和左側)關閉的情況.在這種情況下,底部和右側總是得到一個額外的填充像素。例如,當 pad_along_height 為 5 時,我們在頂部填充2個像素,在底部填充3個像素。請注意,這不同于現(xiàn)有的庫,如 cuDNN 和 Caffe,它們明確指定了填充像素的數(shù)量,并且始終在兩側都填充相同數(shù)量的像素。
對于'VALID“填充”,輸出高度和寬度計算如下:
out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))
out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))
并且沒有使用填充。
給定輸出大小和填充,輸出可以計算為:
$ output[b, i, j, :] = sum_{d_i, d_j} input[b, strides[1] * i + d_i - pad_{top},\ strides[2] * j + d_j - pad_{left}, ...] * filter[d_i, d_j,\ ...]$
其中在原始輸入圖像區(qū)域之外的任何值被認為是零(即,我們在圖像的邊界周圍填充零值)。
因為 input 是4維的,所以每個 input[b, i, j, :]都是一個向量。因為 conv2d,這些向量被 filter[di, dj, :, :] 矩陣乘以產(chǎn)生新的向量。因為 depthwise_conv_2d,每個標量分量 input[b, i, j, k]乘以一個向量 filter[di, dj, k],并且所有的向量都被連接起來。
池操作通過輸入張量掃描矩形窗口,計算每個窗口的縮減操作(平均值,最大值或最大值與 argmax).每個池操作使用大小 ksize 由偏移量分隔的矩形窗口 strides。例如,如果 strides 每個窗口都是所有窗口,如果每個窗口都是 strides 每個窗口都使用兩個等等。
詳細來說,輸出是:
output[i] = reduce(value[strides * i:strides * i + ksize])
其中指數(shù)也考慮到填充值。Convolution 有關填充計算的詳細信息,請參閱該部分。
形態(tài)運算符是圖像處理中使用的非線性濾波器。
灰度形態(tài)擴張是標準求和積卷積的最大和對數(shù):
$ output[b, y, x, c] = max_{dy, dx} input[b, strides[1] * y + rates[1] * dy, strides[2] * x + rates[2] * dx, c] + filter[dy, dx, c]$
在 filter 通常被稱為構造功能。當過濾器采用全零值(也稱為平面結構化功能)時,最大匯集是灰度形態(tài)擴張的特殊情況。
灰度形態(tài)侵蝕是標準和積卷積的最小和對數(shù):
$ output[b, y, x, c] = min_{dy, dx} input[b, strides[1] * y - rates[1] * dy, strides[2] * x - rates[2] * dx, c] - filter[dy, dx, c]$
膨脹和侵蝕是相互的。構造信號 g 的輸入信號 f 的擴張等于對 f 的反射 g 的侵蝕的否定,反之亦然。
以與標準卷積完全相同的方式進行橫移和填充.詳情請參閱Convolution一節(jié)。
規(guī)范化是有用的,以防止神經(jīng)元飽和時,輸入可能有不同的規(guī)模,并幫助泛化。
損失操作測量兩張量之間或在張量和零之間的誤差。這些可以用于測量網(wǎng)絡在回歸任務中的準確度,或用于正則化目的 (重量衰減)。
TensorFlow 提供了幾個可以幫助您執(zhí)行分類的操作。
TensorFlow 提供庫支持查找嵌套張量的值。
TensorFlow 提供了一些構建循環(huán)神經(jīng)網(wǎng)絡的方法。最接受一個 RNNCell-subclassed 對象(參見文檔 tf.contrib.rnn)。
評估操作對于測量網(wǎng)絡的性能很有用。它們通常在評估時使用。
您是否要培養(yǎng)具有數(shù)千或數(shù)百萬個輸出類的多類或多標簽模型(例如,具有較大詞匯量的語言模型)?在這種情況下,使用完整的 Softmax 進行訓練是緩慢的,因為對于每個訓練示例都對所有課程進行了評估。候選抽樣訓練算法可以通過僅考慮每批培訓示例的對比性類別(稱為候選)的小隨機選擇子集來加快您的步驟時間。
TensorFlow 提供以下采樣丟失功能,用于更快的訓練。
TensorFlow 提供以下采樣器,用于在使用上述采樣丟失函數(shù)之一時隨機抽樣候選類。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: