深度學習入門-框架keras-6keras局部連接層介紹

LocallyConnected1D

keras.layers.LocallyConnected1D(filters, kernel_size, strides=1, padding='valid', data_format=None, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

1D 輸入的局部連接層。

LocallyConnected1D 層與 Conv1D 層的工作方式相同,除了權值不共享外, 也就是說,在輸入的每個不同部分應用不同的一組過濾器。

例子

# 將長度爲 3 的非共享權重1D卷積應用於具有10個時間步長的序列,並使用 64個輸出濾波器
model = Sequential()
model.add(LocallyConnected1D(64, 3, input_shape=(10, 32)))
# 這裏有一個bug一直沒想通,就是怎麼變成了8,64,後來才發現LocallyConnected1D不能進行padding=same的卷積計算,只能進行valid的卷積。
# 現在 model.output_shape == (None, 8, 64)在上面再添加一個新的 conv1d
model.add(LocallyConnected1D(32, 3))
# 現在 model.output_shape == (None, 6, 32)

參數
filters: 整數,輸出空間的維度 (即卷積中濾波器的輸出數量)。
kernel_size: 一個整數,或者單個整數表示的元組或列表, 指明 1D 卷積窗口的長度。
strides: 一個整數,或者單個整數表示的元組或列表, 指明卷積的步長。 指定任何 stride 值 != 1 與指定 dilation_rate 值 != 1 兩者不兼容。
padding: 當前僅支持 “valid” (大小寫敏感)。 “same” 可能會在未來支持。
activation: 要使用的激活函數 (詳見 activations)。 如果你不指定,則不使用激活函數 (即線性激活: a(x) = x)。
use_bias: 布爾值,該層是否使用偏置向量。
kernel_initializer: kernel 權值矩陣的初始化器 (詳見 initializers)。
bias_initializer: 偏置向量的初始化器 (詳見 initializers)。
kernel_regularizer: 運用到 kernel 權值矩陣的正則化函數 (詳見 regularizer)。
bias_regularizer: 運用到偏置向量的正則化函數 (詳見 regularizer)。
activity_regularizer: 運用到層輸出(它的激活值)的正則化函數 (詳見 regularizer)。
kernel_constraint: 運用到 kernel 權值矩陣的約束函數 (詳見 constraints)。
bias_constraint: 運用到偏置向量的約束函數 (詳見 constraints)。

輸入尺寸
3D 張量,尺寸爲: (batch_size, steps, input_dim)。
輸出尺寸
3D 張量 ,尺寸爲:(batch_size, new_steps, filters), steps 值可能因填充或步長而改變。

LocallyConnected2D

keras.layers.LocallyConnected2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

2D 輸入的局部連接層。

LocallyConnected2D 層與 Conv2D 層的工作方式相同,除了權值不共享外, 也就是說,在輸入的每個不同部分應用不同的一組過濾器。

例子

# 在 32x32 圖像上應用 3x3 非共享權值和64個輸出過濾器的卷積
# 數據格式 `data_format="channels_last"`:
model = Sequential()
model.add(LocallyConnected2D(64, (3, 3), input_shape=(32, 32, 3)))
# 現在 model.output_shape == (None, 30, 30, 64)
# 注意這一層的參數數量爲 (30*30)*(3*3*3*64) + (30*30)*64

# 在上面再加一個 3x3 非共享權值和 32 個輸出濾波器的卷積:
model.add(LocallyConnected2D(32, (3, 3)))
# 現在 model.output_shape == (None, 28, 28, 32)

參數
filters: 整數,輸出空間的維度 (即卷積中濾波器的輸出數量)。
kernel_size: 一個整數,或者 2 個整數表示的元組或列表, 指明 2D 卷積窗口的寬度和高度。 可以是一個整數,爲所有空間維度指定相同的值。
strides: 一個整數,或者 2 個整數表示的元組或列表, 指明卷積沿寬度和高度方向的步長。 可以是一個整數,爲所有空間維度指定相同的值。
padding: 當前僅支持 “valid” (大小寫敏感)。 “same” 可能會在未來支持。
data_format: 字符串, channels_last (默認) 或 channels_first 之一。 輸入中維度的順序。 channels_last 對應輸入尺寸爲 (batch, height, width, channels), channels_first 對應輸入尺寸爲 (batch, channels, height, width)。 它默認爲從 Keras 配置文件 ~/.keras/keras.json 中 找到的 image_data_format 值。 如果你從未設置它,將使用 “channels_last”。
activation: 要使用的激活函數 (詳見 activations)。 如果你不指定,則不使用激活函數 (即線性激活: a(x) = x)。
use_bias: 布爾值,該層是否使用偏置向量。
kernel_initializer: kernel 權值矩陣的初始化器 (詳見 initializers)。
bias_initializer: 偏置向量的初始化器 (詳見 initializers)。
kernel_regularizer: 運用到 kernel 權值矩陣的正則化函數 (詳見 regularizer)。
bias_regularizer: 運用到偏置向量的正則化函數 (詳見 regularizer)。
activity_regularizer: 運用到層輸出(它的激活值)的正則化函數 (詳見 regularizer)。
kernel_constraint: 運用到 kernel 權值矩陣的約束函數 (詳見 constraints)。
bias_constraint: 運用到偏置向量的約束函數 (詳見 constraints)。

輸入尺寸
4D 張量,尺寸爲: (samples, channels, rows, cols),如果 data_format=‘channels_first’; 或者 4D 張量,尺寸爲: (samples, rows, cols, channels),如果 data_format=‘channels_last’。
輸出尺寸
4D 張量,尺寸爲: (samples, filters, new_rows, new_cols),如果 data_format=‘channels_first’; 或者 4D 張量,尺寸爲: (samples, new_rows, new_cols, filters),如果 data_format=‘channels_last’。 rows 和 cols 的值可能因填充而改變。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章