fully connected layer la gi

Bài này tiếp tục trình làng về convolutional neural network, sẽ tiến hành người sử dụng Lúc input của neural network là hình họa. Mọi người nên gọi trước bài bác neural network và xử lý hình họa trước lúc chính thức bài bác này.

Thiết lập bài bác toán

Gần trên đây việc đánh giá mã captcha nhằm xác minh ko nên robot của google bị chủ yếu robot vượt lên trên qua

Bạn đang xem: fully connected layer la gi

Robot vượt lên đánh giá captcha

Thế nên google ra quyết định tạo ra thuật toán mới mẻ, người sử dụng camera tự sướng người tiêu dùng và người sử dụng deep learning nhằm xác minh coi hình họa với chứa chấp mặt mày người ko thay cho cho tới khối hệ thống captcha cũ.

Bài toán: Input một hình họa màu sắc độ dài rộng 64*64, output hình họa với chứa chấp mặt mày người hay là không.

Convolutional neural network

Convolutional layer

Mô hình neural network kể từ những bài bác trước

Mô hình neural network.

Mỗi hidden layer được gọi là fully connected layer, tên thường gọi theo như đúng chân thành và ý nghĩa, từng node vô hidden layer được liên kết với toàn bộ những node vô layer trước. Cả quy mô được gọi là fully connected neural network (FCN).

Vấn đề của fully connected neural network với xử lý ảnh

Như bài bác trước về xử lý hình họa, thì hình họa màu sắc 64*64 được trình diễn bên dưới dạng 1 tensor 64*64*3. Nên nhằm biểu thị không còn nội dung của tấm hình thì nên cần truyền vô input layer toàn bộ những px (64*64*3 = 12288). Nghĩa là input layer giờ với 12288 nodes.

Input layer và hidden layer 1

Giả sử con số node vô hidden layer một là 1000. Số lượng weight W đằm thắm input layer và hidden layer một là 12288*1000 = 12288000, con số bias là 1000 => tổng số parameter là: 12289000. Đấy mới mẻ đơn giản số parameter đằm thắm input layer và hidden layer 1, vô model còn nhiều layer nữa, và nếu như độ dài rộng hình họa tăng, ví dụ 512*512 thì con số parameter tăng cực kỳ nhanh chóng => Cần biện pháp chất lượng rộng lớn !!!

Nhận xét:

  • Trong hình họa những px ở cạnh nhau thông thường với liên kết cùng nhau hơn là những px không ở gần. Ví dụ như luật lệ tính convolution bên trên hình họa ở bài bác trước. Để mò mẫm những đàng vô hình họa, tao vận dụng sobel kernel bên trên từng vùng độ dài rộng 3*3. Hay thực hiện đường nét hình họa tao vận dụng sharpen kernel cũng bên trên vùng với độ dài rộng 3*3.
  • Trong luật lệ tính convolution vô hình họa, chỉ 1 kernel được sử dụng bên trên toàn cỗ tấm hình. Hay thưa cách tiếp là những px hình họa chia sẻ thông số cùng nhau.

=> gí dụng luật lệ tính convolution vô layer vô neural network tao hoàn toàn có thể xử lý được yếu tố lượng rộng lớn parameter vẫn kéo ra được những đặc thù của hình họa.

Convolutional layer đầu tiên

Bài trước luật lệ tính convolution tiến hành bên trên hình họa xám với trình diễn hình họa dạng quái trận

Tuy nhiên hình họa màu sắc với cho tới 3 channels red, green, xanh rớt nên những lúc trình diễn hình họa bên dưới dạng tensor 3 chiều. Nên tao cũng tiếp tục khái niệm kernel là một tensor 3 chiều độ dài rộng k*k*3.

Phép tính convolution bên trên hình họa màu sắc với k=3.

Ta khái niệm kernel với nằm trong chừng sâu sắc (depth) với trình diễn hình họa, rồi tiếp sau đó tiến hành dịch rời khối kernel tương tự động như Lúc tiến hành bên trên hình họa xám.

Tensor X, W 3 chiều được viết lách bên dưới dạng 3 matrix.

Khi trình diễn quái trận tao cần thiết 2 chỉ số mặt hàng và cột: i và j, thì Lúc trình diễn ở dạng tensor 3 chiều cần thiết thêm thắt chỉ số chừng sâu sắc k. Nên chỉ số từng thành phần vô tensor là x_{ijk}.

y_{11} = b + (x_{111}*w_{111} + x_{121}*w_{121} + x_{131}*w_{131} + x_{211}*w_{211} + x_{221}*w_{221} + x_{231}*w_{231} + x_{311}*w_{311} + x_{321}*w_{321} + x_{331}*w_{331}) + (x_{112}*w_{112} + x_{122}*w_{122} + x_{132}*w_{132} + x_{212}*w_{212} + x_{222}*w_{222} + x_{232}*w_{232} + x_{312}*w_{312} + x_{322}*w_{322} + x_{332}*w_{332}) + (x_{113}*w_{113} + x_{123}*w_{123} + x_{133}*w_{133} + x_{213}*w_{213} + x_{223}*w_{223} + x_{233}*w_{233} + x_{313}*w_{313} + x_{323}*w_{323} + x_{333}*w_{333}) = -25
Thực hiện nay luật lệ tính convolution bên trên hình họa màu

Nhận xét:

  • Output Y của luật lệ tính convolution bên trên hình họa màu sắc là một matrix.
  • Có 1 hệ số bias được nằm trong vào sau cùng bước tính tổng những thành phần của luật lệ tính element-wise

Các quy tắc so với padding và stride toàn trả tương tự động như ở bài bác trước.

Với từng kernel không giống nhau tao tiếp tục học tập được những đặc thù không giống nhau của hình họa, nên trong những convolutional layer tao tiếp tục người sử dụng nhiều kernel nhằm học tập được nhiều nằm trong tính của hình họa. Vì từng kernel tạo ra output là một matrix nên k kernel tiếp tục tạo ra k output matrix. Ta phối kết hợp k output matrix đó lại trở nên 1 tensor 3 chiều với chiều sâu sắc k.

Convolutional layer đầu tiên

Output của convolutional layer thứ nhất tiếp tục trở nên input của convolutional layer tiếp theo sau.

Xem thêm: lâu rồi không gặp đam mỹ

Convolutional layer tổng quát

Giả sử input của một convolutional layer tổng quát lác là tensor độ dài rộng H * W * D.

Kernel với độ dài rộng F * F * D (kernel luôn luôn với depth vày depth của input và F là số lẻ), stride: S, padding: Phường.

Convolutional layer vận dụng K kernel.

=> Output của layer là tensor 3 chiều với kích thước: \displaystyle (\frac{H-F+2P}{S} + 1) * (\frac{W-F+2P}{S} + 1) * K

Lưu ý:

  • Output của convolutional layer tiếp tục qua chuyện hàm activation function trước lúc trở nên input của convolutional layer tiếp theo.
  • Tổng số parameter của layer: Mỗi kernel với độ dài rộng F*F*D và có một thông số bias, nên tổng parameter của một kernel là F*F*D + 1. Mà convolutional layer vận dụng K kernel => Tổng số parameter vô layer này là K * (F*F*D + 1).

Pooling layer

Pooling layer thông thường được sử dụng trong số những convolutional layer, nhằm hạn chế độ dài rộng tài liệu vẫn tạo được những tính chất cần thiết. Kích thước tài liệu hạn chế gom hạn chế việc đo lường vô model.

Gọi pooling size độ dài rộng K*K. Input của pooling layer với độ dài rộng H*W*D, tao tách đi ra thực hiện D quái trận độ dài rộng H*W. Với từng quái trận, bên trên vùng độ dài rộng K*K bên trên quái trận tao mò mẫm maximum hoặc average của tài liệu rồi viết lách vô quái trận sản phẩm. Quy tắc về stride và padding vận dụng như luật lệ tính convolution bên trên hình họa.

max pooling layer với size=(3,3), stride=1, padding=0

Nhưng hầu hết khi sử dụng pooling layer thì tiếp tục người sử dụng size=(2,2), stride=2, padding=0. Khi cơ output width và height của tài liệu giảm xuống 50%, depth thì được không thay đổi .


Sau pooling layer (2*2).
Source: http://cs231n.github.io/convolutional-networks/

Có 2 loại pooling layer thịnh hành là: max pooling và average pooling.

Ví dụ về pooling layer

Trong một trong những model người tao người sử dụng convolutional layer với stride > 1 nhằm hạn chế độ dài rộng tài liệu thay cho cho tới pooling layer.

Fully connected layer

Sau Lúc hình họa được truyền trải qua nhiều convolutional layer và pooling layer thì model đang được học tập được kha khá những Điểm sáng của hình họa (ví dụ đôi mắt, mũi, sườn mặt mày,…) thì tensor của output của layer sau cùng, độ dài rộng H*W*D, sẽ tiến hành gửi về 1 vector độ dài rộng (H*W*D)

Sau cơ tao người sử dụng những fully connected layer nhằm phối kết hợp những Điểm sáng của hình họa nhằm đi ra được output của model.

Visualise convolutional neural network

Mô hình convolutional neural network:

Input image -> Convolutional layer (Conv) + Pooling layer (Pool) -> Fully connected layer (FC) -> Output.

Ví dụ quy mô convolutional neural network. Source:
https://www.easy-tensorflow.com/tf-tutorials/convolutional-neural-nets-cnns

Có thể coi cụ thể vào cụ thể từng layer ở trên đây.

Xem thêm: ta tu có thể là giả tiên

Chi tiết những layer vô convolutional neural network với input là số 7

Mạng VGG 16

VGG16 là mạng convolutional neural network được khuyến cáo vày K. Simonyan and A. Zisserman, University of Oxford. Model sau thời điểm train vày mạng VGG16 đạt chừng đúng mực 92.7% top-5 test vô tài liệu ImageNet bao gồm 14 triệu hình hình họa nằm trong 1000 lớp không giống nhau. Giờ vận dụng kỹ năng phía trên nhằm phân tách mạng VGG 16.

Kiến trúc vgg16
conv: convolutional layer, pool: pooling layer, fc: fully connected layer

Phân tích:

  • Convolutional layer: độ dài rộng 3*3, padding=1, stride=1. Tại sao ko ghi stride, padding vẫn biết? Vì đem tấp tểnh được xem là stride=1 và padding khiến cho output nằm trong width và height với input.
  • Pool/2 : max pooling layer với size 2*2
  • 3*3 conv, 64: thì 64 là số kernel vận dụng vô layer đấy, hoặc depth của output của layer đấy.
  • Càng những convolutional layer sau thì độ dài rộng width, height càng hạn chế tuy nhiên depth càng tăng.
  • Sau không ít convolutional layer và pooling layer thì tài liệu được flatten và cho tới vô fully connected layer.

Bài sau bản thân tiếp tục trình làng về keras và chỉ dẫn người sử dụng keras nhằm vận dụng convolutional neural vô những phần mềm như phát hiện số viết lách, Dự kiến góc dịch rời vô xe hơi tự động lái.

Bài 7: Keras cho việc phân loại ảnh
Bài 5: Xử lý ảnh