Các lớp mạng cơ bản trong Keras (2) - Lớp tích chập

Tham khảo: http://keras-cn.readthedocs.io/en/latest/layers/convolutional_layer/

Lớp tích chập

Lớp Conv1D

keras.layers.convolutional.Conv1D(filters, kernel_size, strides=1, padding='valid', dilation_rate=1, 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)

Lớp tích chập một chiều (tích chập theo thời gian), được sử dụng để thực hiện lọc cục bộ trên tín hiệu đầu vào một chiều. Khi sử dụng lớp này làm lớp đầu tiên, cần cung cấp tham số input_shape. Ví dụ ** (10,128)** biểu diễn một chuỗi có độ dài 10, mỗi phần tử là vector 128 chiều. Còn (None, 128) biểu diễn chuỗi vector 128 chiều có độ dài thay đổi.

Lớp này tạo ra kết quả bằng cách tích chập tín hiệu đầu vào với kernel theo một hướng không gian (hoặc thời gian) duy nhất. Nếu use_bias=True, một hệ số bias sẽ được cộng thêm, và nếu activation khác None, đầu ra sẽ được đưa qua hàm kích hoạt.

Tham số

  • filters: Số lượng kernel tích chập (tức là chiều đầu ra)
  • kernel_size: Số nguyên hoặc list/tuple chứa một số nguyên, độ dài cửa sổ kernel theo không gian hoặc thời gian
  • strides: Số nguyên hoặc list/tuple chứa một số nguyên, bước nhảy của tích chập. Bất kỳ strides nào khác 1 đều không tương thích với bất kỳ dilation_rate nào khác 1
  • padding: Chiến lược đệm, là "valid", "same" hoặc "causal". "causal" sẽ tạo ra tích chập nhân quả (dilated), tức là output[t] không phụ thuộc vào input[t+1:]. Hữu ích khi mô hình hóa tín hiệu tuần tự không thể vi phạm thứ tự thời gian. Tham khảo WaveNet: A Generative Model for Raw Audio, section 2.1. "valid" chỉ thực hiện tích chập hợp lệ, tức là không xử lý dữ liệu biên. "same" giữ kết quả tích chập ở biên, thường dẫn đến đầu ra có cùng shape với đầu vào.
  • activation: Hàm kích hoạt, là tên hàm kích hoạt định sẵn hoặc hàm Theano theo từng phần tử. Nếu không chỉ định, sẽ không sử dụng hàm kích hoạt nào (tức là sử dụng hàm kích hoạt tuyến tính: a(x)=x)
  • dilation_rate: Số nguyên hoặc list/tuple chứa một số nguyên, chỉ định tỷ lệ giãn nở trong tích chập dilated. Bất kỳ dilation_rate nào khác 1 đều không tương thích với bất kỳ strides nào khác 1.
  • use_bias: Giá trị boolean, có sử dụng hệ số bias hay không
  • kernel_initializer: Phương pháp khởi tạo trọng số, là chuỗi tên phương pháp khởi tạo định sẵn hoặc initializer để khởi tạo trọng số
  • bias_initializer: Phư pháp khởi tạo bias, là chuỗi tên phương pháp khởi tạo định sẵn hoặc initializer để khởi tạo bias
  • kernel_regularizer: Regularizer áp dụng lên trọng số, là đối tượng Regularizer
  • bias_regularizer: Regularizer áp dụng lên vector bias, là đối tượng Regularizer
  • activity_regularizer: Regularizer áp dụng lên đầu ra, là đối tượng Regularizer
  • kernel_constraint: Constraint áp dụng lên trọng số, là đối tượng Constraints
  • bias_constraint: Constraint áp dụng lên bias, là đối tượng Constraints

Shape đầu vào

Tensor 3D có shape (samples, steps, input_dim)

Shape đầu ra

Tensor 3D có shape (samples, new_steps, nb_filter) vì có vector padding, giá trị steps sẽ thay đổi

【Gợi ý】Có thể xem Convolution1D như phiên bản rút gọn của Convolution2D. Thực hiện tích chập 1D trên tín hiệu (10,32) tương đương với thực hiện tích chập 2D với kernel có kích thước (filter_length, 32).

Lớp Conv2D

keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), 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)

Lớp tích chập hai chiều, tức tích chập không gian trên ảnh. Lớp này thực hiện tích chập trượt trên đầu vào hai chiều. Khi sử dụng làm lớp đầu tiên, cần cung cấp tham số input_shape. Ví dụ input_shape = (128,128,3) biểu diễn ảnh RGB màu 128x128 (data_format='channels_last')

Tham số

  • filters: Số lượng kernel tích chập (tức là chiều đầu ra)
  • kernel_size: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, chiều rộng và chiều cao của kernel. Nếu là số nguyên đơn, biểu diễn cùng độ dài cho mọi chiều không gian.
  • strides: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, bước nhảy của tích chập. Nếu là số nguyên đơn, biểu diễn cùng bước nhảy cho mọi chiều không gian. Bất kỳ strides nào khác 1 đều không tương thích với bất kỳ dilation_rate nào khác 1
  • padding: Chiến lược đệm, là "valid" hoặc "same". "valid" chỉ thực hiện tích chập hợp lệ, tức là không xử lý dữ liệu biên. "same" giữ kết quả tích chập ở biên, thường dẫn đến đầu ra có cùng shape với đầu vào.
  • activation: Hàm kích hoạt, là tên hàm kích hoạt định sẵn hoặc hàm Theano theo từng phần tử. Nếu không chỉ định, sẽ không sử dụng hàm kích hoạt nào (tức là sử dụng hàm kích hoạt tuyến tính: a(x)=x)
  • dilation_rate: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, chỉ định tỷ lệ giãn nở trong tích chập dilated. Bất kỳ dilation_rate nào khác 1 đều không tương thích với bất kỳ strides nào khác 1.
  • data_format: Chuỗi, "channels_first" hoặc "channels_last", đại diện cho vị trí chiều kênh ảnh. Tham số này là image_dim_ordering trong Keras 1.x, "channels_last" tương ứng với "tf", "channels_first" tương ứng với "th". Với ảnh RGB 128x128, "channels_first" cần tổ chức dữ liệu thành (3,128,128), còn "channels_last" cần tổ chức thành (128,128,3). Giá trị mặc định là giá trị được thiết lập trong ~/.keras/keras.json, nếu chưa từng thiết lập thì là "channels_last".
  • use_bias: Giá trị boolean, có sử dụng hệ số bias hay không
  • kernel_initializer: Phương pháp khởi tạo trọng số, là chuỗi tên phương pháp khời tạo định sẵn hoặc initializer để khởi tạo trọng số
  • bias_initializer: Phương pháp khởi tạo bias, là chuỗi tên phương pháp khởi tạo định sẵn hoặc initializer để khởi tạo bias
  • kernel_regularizer: Regularizer áp dụng lên trọng số, là đối tượng Regularizer
  • bias_regularizer: Regularizer áp dụng lên vector bias, là đối tượng Regularizer
  • activity_regularizer: Regularizer áp dụng lên đầu ra, là đối tượng Regularizer
  • kernel_constraint: Constraint áp dụng lên trọng số, là đối tượng Constraints
  • bias_constraint: Constraint áp dụng lên bias, là đối tượng Constraints

Shape đầu vào

Chế độ 'channels_first': Tensor 4D có shape (samples, channels, rows, cols)

Chế độ 'channels_last': Tensor 4D có shape (samples, rows, cols, channels)

Lưu ý: shape đầu vào ở đây là shape đầu vào bên trong hàm, không phải input_shape cần chỉ định cho giao diện hàm. Vui lòng tham khảo ví dụ được cung cấp bên dưới.

Shape đầu ra

Chế độ 'channels_first': Tensor 4D có shape (samples, nb_filter, new_rows, new_cols)

Chế độ 'channels_last': Tensor 4D có shape (samples, new_rows, new_cols, nb_filter)

Số hàng và cột đầu ra có thể thay đổi tùy thuộc vào phương pháp padding

Lớp SeparableConv2D

keras.layers.convolutional.SeparableConv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, depth_multiplier=1, activation=None, use_bias=True, depthwise_initializer='glorot_uniform', pointwise_initializer='glorot_uniform', bias_initializer='zeros', depthwise_regularizer=None, pointwise_regularizer=None, bias_regularizer=None, activity_regularizer=None, depthwise_constraint=None, pointwise_constraint=None, bias_constraint=None)

Lớp này thực hiện tích chập có thể phân tách theo chiều sâu.

Tích chập có thể phân tách đầu tiên thực hiện tích chập theo chiều sâu (tích chập riêng cho mỗi kênh đầu vào), sau đó thực hiện tích chập từng điểm để trộn kết quả tích chập trước đó thành các kênh đầu ra. Tham số depth_multiplier kiểm soát số lượng kênh đầu ra được tạo ra từ mỗi kênh đầu vào trong bước tích chập theo chiều sâu.

Về mặt trực quan, tích chập có thể phân tách có thể được xem như việc phân rã một kernel thành hai kernel nhỏ hơn, hoặc được xem như một trường hợp cực đoan của module Inception.

Khi sử dụng làm lớp đầu tiên, cần cung cấp tham số input_shape. Ví dụ input_shape = (3,128,128) biểu diễn ảnh RGB màu 128x128

Tham số

  • filters: Số lượng kernel tích chập (tức là chiều đầu ra)
  • kernel_size: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, chiều rộng và chiều cao của kernel. Nếu là số nguyên đơn, biểu diễn cùng độ dài cho mọi chiều không gian.
  • strides: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, bước nhảy của tích chập. Nếu là số nguyên đơn, biểu diễn cùng bước nhảy cho mọi chiều không gian. Bất kỳ strides nào khác 1 đều không tương thích với bất kỳ dilation_rate nào khác 1
  • padding: Chiến lược đệm, là "valid" hoặc "same". "valid" chỉ thực hiện tích chập hợp lệ, tức là không xử lý dữ liệu biên. "same" giữ kết quả tích chập ở biên, thường dẫn đến đầu ra có cùng shape với đầu vào.
  • activation: Hàm kích hoạt, là tên hàm kích hoạt định sẵn hoặc hàm Theano theo từng phần tử. Nếu không chỉ định, sẽ không sử dụng hàm kích hoạt nào (tức là sử dụng hàm kích hoạt tuyến tính: a(x)=x)
  • dilation_rate: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, chỉ định tỷ lệ giãn nở trong tích chập dilated. Bất kỳ dilation_rate nào khác 1 đều không tương thích với bất kỳ strides nào khác 1.
  • data_format: Chuỗi, "channels_first" hoặc "channels_last", đại diện cho vị trí chiều kênh ảnh. Tham số này là image_dim_ordering trong Keras 1.x, "channels_last" tương ứng với "tf", "channels_first" tương ứng với "th". Với ảnh RGB 128x128, "channels_first" cần tổ chức dữ liệu thành (3,128,128), còn "channels_last" cần tổ chức thành (128,128,3). Giá trị mặc định là giá trị được thiết lập trong ~/.keras/keras.json, nếu chưa từng thiết lập thì là "channels_last".
  • use_bias: Giá trị boolean, có sử dụng hệ số bias hay không
  • depth_multiplier: Số lượng kênh đầu ra được sử dụng cho mỗi kênh đầu vào trong bước tích chập theo chiều sâu
  • kernel_initializer: Phương pháp khởi tạo trọng số, là chuỗi tên phương pháp khởi tạo định sẵn hoặc initializer để khởi tạo trọng số
  • bias_initializer: Phương pháp khởi tạo bias, là chuỗi tên phương pháp khởi tạo định sẵn hoặc initializer để khởi tạo bias
  • depthwise_regularizer: Regularizer áp dụng lên trọng số tích chập theo chiều sâu, là đối tượng Regularizer
  • pointwise_regularizer: Regularizer áp dụng lên trọng số tích chập từng điểm, là đối tượng Regularizer
  • kernel_regularizer: Regularizer áp dụng lên trọng số, là đối tượng Regularizer
  • bias_regularizer: Regularizer áp dụng lên vector bias, là đối tượng Regularizer
  • activity_regularizer: Regularizer áp dụng lên đầu ra, là đối tượng Regularizer
  • kernel_constraint: Constraint áp dụng lên trọng số, là đối tượng Constraints
  • bias_constraint: Constraint áp dụng lên bias, là đối tượng Constraints
  • depthwise_constraint: Constraint áp dụng lên trọng số tích chập theo chiều sâu, là đối tượng Constraints
  • pointwise_constraint: Constraint áp dụng lên trọng số tích chập từng điểm, là đối tượng Constraints

Shape đầu vào

Chế độ 'channels_first': Tensor 4D có shape (samples, channels, rows, cols)

Chế độ 'channels_last': Tensor 4D có shape (samples, rows, cols, channels)

Lưu ý: shape đầu vào ở đây là shape đầu vào bên trong hàm, không phải input_shape cần chỉ định cho giao diện hàm. Vui lòng tham khảo ví dụ được cung cấp bên dưới.

Shape đầu ra

Chế độ 'channels_first': Tensor 4D có shape (samples, nb_filter, new_rows, new_cols)

Chế độ 'channels_last': Tensor 4D có shape (samples, new_rows, new_cols, nb_filter)

Số hàng và cột đầu ra có thể thay đổi tùy thuộc vào phương pháp padding

Lớp Conv2DTranspose

keras.layers.convolutional.Conv2DTranspose(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)

Lớp này thực hiện phép tích chập chuyển vị (deconvolution). Trường hợp cần tích chập chuyển vị thường xảy ra khi người dùng muốn thực hiện phép biến đổi ngược với kết quả của một tích chập thông thường. Ví dụ, chuyển đổi tensor có shape bằng với shape đầu ra của lớp tích chập thành tensor có shape bằng với shape đầu vào của lớp tích chập. Đồng thời duy trì kết nối tương thích với lớp tích chập.

Khi sử dụng làm lớp đầu tiên, cần cung cấp tham số input_shape. Ví dụ input_shape = (3,128,128) biểu diễn ảnh RGB màu 128x128

Tham số

  • filters: Số lượng kernel tích chập (tức là chiều đầu ra)
  • kernel_size: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, chiều rộng và chiều cao của kernel. Nếu là số nguyên đơn, biểu diễn cùng độ dài cho mọi chiều không gian.
  • strides: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, bước nhảy của tích chập. Nếu là số nguyên đơn, biểu diễn cùng bước nhảy cho mọi chiều không gian. Bất kỳ strides nào khác 1 đều không tương thích với bất kỳ dilation_rate nào khác 1
  • padding: Chiến lược đệm, là "valid" hoặc "same". "valid" chỉ thực hiện tích chập hợp lệ, tức là không xử lý dữ liệu biên. "same" giữ kết quả tích chập ở biên, thường dẫn đến đầu ra có cùng shape với đầu vào.
  • activation: Hàm kích hoạt, là tên hàm kích hoạt định sẵn hoặc hàm Theano theo từng phần tử. Nếu không chỉ định, sẽ không sử dụng hàm kích hoạt nào (tức là sử dụng hàm kích hoạt tuyến tính: a(x)=x)
  • dilation_rate: Số nguyên đơn hoặc list/tuple gồm hai số nguyên, chỉ định tỷ lệ giãn nở trong tích chập dilated. Bất kỳ dilation_rate nào khác 1 đều không tương thích với bất kỳ strides nào khác 1.
  • data_format: Chuỗi, "channels_first" hoặc "channels_last", đại diện cho vị trí chiều kênh ảnh. Tham số này là image_dim_ordering trong Keras 1.x, "channels_last" tương ứng với "tf", "channels_first" tương ứng với "th". Với ảnh RGB 128x128, "channels_first" cần tổ chức dữ liệu thành (3,128,128), còn "channels_last" cần tổ chức thành (128,128,3). Giá trị mặc định là giá trị được thiết lập trong ~/.keras/keras.json, nếu chưa từng thiết lập thì là "channels_last".
  • use_bias: Giá trị boolean, có sử dụng hệ số bias hay không
  • kernel_initializer: Phương pháp khởi tạo trọng số, là chuỗi tên phương pháp khởi tạo định sẵn hoặc initializer để khởi tạo trọng số
  • bias_initializer: Phương pháp khởi tạo bias, là chuỗi tên phương pháp khởi tạo định sẵn hoặc initializer để khởi tạo bias
  • kernel_regularizer: Regularizer áp dụng lên trọng số, là đối tượng Regularizer
  • bias_regularizer: Regularizer áp dụng lên vector bias, là đối tượng Regularizer
  • activity_regularizer: Regularizer áp dụng lên đầu ra, là đối tượng Regularizer
  • kernel_constraint: Constraint áp dụng lên trọng số, là đối tượng Constraints
  • bias_constraint: Constraint áp dụng lên bias, là đối tượng Constraints

Shape đầu vào

Chế độ 'channels_first': Tensor 4D có shape (samples, channels, rows, cols)

Chế độ 'channels_last': Tensor 4D có shape (samples, rows, cols, channels)

Lưu ý: shape đầu vào ở đây là shape đầu vào bên trong hàm, không phải input_shape cần chỉ định cho giao diện hàm. Vui lòng tham khảo ví dụ được cung cấp bên dưới.

Shape đầu ra

Chế độ 'channels_first': Tensor 4D có shape (samples, nb_filter, new_rows, new_cols)

Chế độ 'channels_last': Tensor 4D có shape (samples, new_rows, new_cols, nb_filter)

Số hàng và cột đầu ra có thể thay đổi tùy thuộc vào phương pháp padding

Đăng vào ngày 26 tháng 6 lúc 20:29