Fully Connected Layer Là Gì

  -  

Trong mạng nơ-ron, mạng nơ-ron tích chập (ConvNets tốt CNNs, Convolutional Neural Network) là 1 trong những Một trong những phương pháp thiết yếu để triển khai nhấn dạng hình hình họa, phân loại hình hình họa. CNN được áp dụng rộng rãi trong một trong những nghành nhỏng phân phát hiện tại đối tượng người tiêu dùng, dìm dạng khuôn mặt, ..... Bài viết này trình bày một số trong những kiến thức và kỹ năng cơ bản đang trường đoản cú mày mò về mạng nơ-ron tích chập cùng các kiến thức và kỹ năng tương quan cũng giống như trình bày một ví dụ nhỏ tuổi về minh bạch hình hình ảnh của chó cùng mèo bằng cách sử dụng phương thức trên.

Bạn đang xem: Fully connected layer là gì

Quý khách hàng sẽ xem: Fully connected layer là gì

Tìm hiểu về CNN

Mô hình neural network

Mạng nơ-ron tự tạo (Neural Network - NN) là 1 trong những mô hình xây dựng tế bào bỏng phương thức buổi giao lưu của mạng nơ-ron thần gớm. Kết hợp với những kỹ năng học tập sâu (Deep Learning - DL), mạng nơ-ron tự tạo vẫn trở thành một giải pháp rất trẻ khỏe mang về hiệu quả rất tốt cho những bài xích toán cạnh tranh như dấn dạng ảnh, giọng nói giỏi xử lý ngôn ngữ tự nhiên và thoải mái.

Lịch sử phát triển của mạng nơ-ron nhân tạo ban đầu lúc Warren McCulloch với Walter Pitts sẽ tạo nên một mô hình tính tân oán cho mạng nơ-ron dựa vào các thuật toán thù hotline là xúc tích và ngắn gọn ngưỡng vào năm 1943. Tuy nhiên, để làm quen cùng hiểu được một số trong những kỹ năng cơ phiên bản về quy mô mạng nơ-ron nhân tạp, bọn họ vẫn bàn mang lại hồi quy logictics - lắp thêm rất có thể coi là mô hình neural network dễ dàng nhất với chỉ input đầu vào layer và output layer.

Giả sử bọn họ tất cả bài tân oán dựa đoán kĩ năng dấn đối chọi ship hàng dựa vào khoảng cách và thời điểm đề xuất giao trong ngày dựa trên dữ liệu vẫn mang đến trước. Từ kia ta rất có thể hiểu rõ rằng cùng với các cỗ tài liệu x, y mang lại sẵn cùng với x bao gồm nhì đặc trưng x1x_1x1​ cùng x2x_2x2​ lần lượt là khoảng cách với thời điểm phải giao trong thời gian ngày, họ sẽ thực hiện những cách thức nhằm tìm được khoảng chừng y^=f(w,x)widehaty = f(w, x)y​=f(w,x) làm sao cho ngay cạnh với cái giá trị y tuyệt nhất.

Thông thường, bọn họ thường xuyên sử dụng hàm f(w,x)=wTxf(w, x) = w^Txf(w,x)=wTx để dễ dàng tính tân oán, tuy nhiên Áp sạc ra y là phần trăm deals gồm được trao hay không nên để đầu ra thỏa mãn nhu cầu được điều kiện bao gồm dạng tựa như Xác Suất tức là luôn luôn có giá trị trong vòng từ 0 đến 1 bọn họ thường sử dụng hàm logictics θ(z)=11+e−z heta(z) = frac11+e^-zθ(z)=1+e−z1​ cùng với z=f(w,x)z = f(w, x)z=f(w,x) thường được Điện thoại tư vấn là hàm sighack có tác dụng hàm activation.

khi kia, hàm lỗi của một cho từng điểm x(i),y(i)x^(i), y^(i)x(i),y(i) được khái niệm là cross-entropy của y(i)y^(i)y(i) với y^(i)widehaty^(i)y​(i) như sau:

L=−(y(i)∗log(y^(i))−(1−y(i))∗log(1−y^(i)))L = -(y^(i) * log(widehaty^(i)) - (1 - y^(i)) * log(1 - widehaty^(i)) )L=−(y(i)∗log(y​(i))−(1−y(i))∗log(1−y​(i)))

Khi đó hàm này bên trên cục bộ tài liệu được tính bằng phương pháp rước tổng những quý giá trên. Bằng giải pháp tối ưu hàm mất đuối này, thường xuyên bằng cách thức đạo hàm gradient, chúng ta có thể hoàn toàn có thể chiếm được quy mô cân xứng tuyệt nhất mang lại bài bác tân oán cũng như bộ dữ liệu đang mang đến. Tuy nhiên, mặc dù nỗ lực mà lại hầu hết giá trị ước tính từ bỏ hàm bên trên vẫn đang còn một số chênh lệch với giá trị thực tiễn, vì thế nhằm đảm bảo an toàn mang đến tính khách quan, tín đồ ta hay thêm 1 giá trị b tuyệt w0w_0w0​ vào để tính bằng cách áp dụng f(w,x)=wTx+w0f(w, x) = w^Tx + w_0f(w,x)=wTx+w0​ quý hiếm này là cực hiếm bias rất có thể đọc là phần bù đến phần lớn chênh lệch khó/quan trọng cực tè trường đoản cú bước bên trên.

Thông thường các bước tính toán của một mô hình mạng nơ-ron tự tạo thường xuyên được biểu đạt bởi một biểu đồ gia dụng tính toán thù để có thể quan ngay cạnh trực quan liêu hơn. Dưới đó là một biểu đồ diễn đạt mang lại bài toán phân loại dựa trên hồi quy logictics.


*

Bức Ảnh tự trang web https://sebastianraschka.com/faq/docs/logisticregr-neuralnet.html

Convolutional Neural Network

Nlỗi trình bày ngơi nghỉ trên, Convolutional Neural Network là 1 trong những phương pháp thiết yếu khi thực hiện dữ liệu về hình ảnh. Kiến trúc mạng này lộ diện vì chưng các cách thức xử trí tài liệu ảnh hay áp dụng quý giá của từng pixel. Vậy nên với một hình họa có mức giá trị kích cỡ 100x100 áp dụng kênh RGB ta bao gồm tổng số ta gồm 100 * 100 * 3 bởi 30000 nút ngơi nghỉ lớp nguồn vào. Điều kia kéo theo việc tất cả một trong những lượng mập weight cùng bias dẫn đến mạng nơ-ron trsống nên vượt đồ sộ, tạo trở ngại đến việc tính tân oán. Hơn nữa, bạn cũng có thể thấy rằng lên tiếng của các pixel hay chỉ Chịu đựng tác động vì những pixel ngay gần nó, vậy nên việc bỏ qua một trong những nút ít ở tầng đầu vào trong mỗi lần huấn luyện và giảng dạy sẽ không có tác dụng sút độ đúng mực của quy mô. Vậy đề nghị tín đồ ta áp dụng cửa số tích chập nhằm mục tiêu xử lý vấn đề số lượng tmê mệt số to nhưng vẫn trích xuất được đặc trưng của ảnh.

Về mặt nghệ thuật, vào mô hình học tập sâu CNN, mô hình hình họa đầu vào đã đưa nó qua 1 loạt những lớp tích chập cùng với các cỗ thanh lọc, sau đó tới trường Pooling, rồi tiếp theo sau là các lớp được liên kết không thiếu (FC — fully connected layers) cùng ở đầu cuối áp dụng hàm softmax nhằm phân một số loại một đối tượng dựa trên quý hiếm tỷ lệ vào khoản từ 0 mang lại 1.

Xem thêm: Bidv Smartbanking Là Gì? Cách Đăng Ký Smart Banking Bidv Online

Convolution Layer

Quá trình tđuổi những cỗ lọc thông thường sẽ có những cực hiếm được qui định bao gồm:

padding: chính sách cỗ đệm của cục thanh lọc xuất xắc chính là phần color xám được thêm vào ảnhstride: chế độ bước nhảy đầm trong quá trình tiến hành.

Hình minch họa sau sẽ giúp đỡ chúng ta dễ dàng tưởng tượng rộng về quy trình trên:

*

Tấm hình chụp từ bỏ trang CS231n Convolutional Neural Networks for Visual Recognition, nhằm nắm rõ hơn về Convolution Layer hầu như bạn hoàn toàn có thể đọc tiếp về phần lý giải sống trang này.

Với từng kernel khác biệt ta sẽ học được gần như đặc trưng không giống nhau của ảnh, đề nghị trong những convolutional layer ta đang cần sử dụng nhiều kernel nhằm học được nhiều trực thuộc tính của hình họa. Vì từng kernel cho ra output là 1 matrix cần k kernel sẽ đã cho ra k output matrix. Ta phối kết hợp k output matrix này lại thành 1 tensor 3D gồm chiều sâu k. Output đầu ra của convolutional layer vẫn qua hàm activation function trước lúc trở thành đầu vào của convolutional layer tiếp theo sau.

Pooling layer

Pooling layer hay được dùng thân các convolutional layer, để giảm kích cỡ dữ liệu tuy nhiên vẫn duy trì được các trực thuộc tính quan trọng. Kích thước dữ liệu sút góp giảm câu hỏi tính toán thù trong Model. Trong quy trình này, quy tắc về stride với padding vận dụng nhỏng phnghiền tính convolution bên trên hình ảnh.


*

Tấm hình từ trang https://www.geeksforgeeks.org/cnn-introduction-to-pooling-layer/

Fully connected layer

Sau lúc ảnh được truyền qua nhiều convolutional layer với pooling layer thì Mã Sản Phẩm vẫn học được tương đối các Điểm sáng của hình họa thì tensor của output của layer sau cùng sẽ được là phẳng thành vector với đưa vào một lớp được kết nối nlỗi một mạng nơ-ron. Với FC layer được kết hợp với những hào kiệt lại cùng nhau để tạo thành một quy mô. Cuối thuộc áp dụng softmax hoặc sigmoid để phân nhiều loại cổng output.

*

Phân các loại ảnh

Bài toán phân loại hình ảnh chó với mèo nghe dường như đơn giản dễ dàng, tuy thế nó chỉ được giải quyết kết quả trong vài ba năm qua bằng cách sử dụng mạng nơ-ron tích vừa lòng học sâu. Bằng những triển khai ví dụ này, chúng ta đang gọi thêm được về Convolutional Neural Network lân cận gần như triết lý sẽ trình diễn trên.

Dữ liệu

Dữ liệu được thực hiện là tập dữ liệu Dogs vs. Cats trên Kaggle. Tập dữ liệu này bao gồm ngay gần 25000 tập ảnh chó với mèo đã được gán nhãn sẵn trong một tệp csv đi kèm theo. Phần dữ liệu này sẽ tiến hành sử dụng trong ví dụ này.

Các bước tiến hành

Trước hết họ import các thỏng viện bởi đoạn mã sau:

import os, cv2, itertoolsimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inline!pip install np_utilsfrom keras.utils.np_utils import to_categoricalfrom keras.models import Sequentialfrom keras.layers import Conv2Dfrom keras.layers import MaxPooling2Dfrom keras.layers import Flattenfrom keras.layers import Densefrom keras.layers import Dropoutfrom sklearn.utils import shuffle!pip install sklearnimport sklearnfrom sklearn.model_selection import train_test_splitTiếp sẽ là quan niệm một trong những hằng số để tiện lợi sử dungj:

TRAIN_DIR = "./train/"TEST_DIR = "./test1/"ROWS = 64COLS = 64CHANNELS = 3Từ kia họ mang băng thông tài liệu bởi đoạn mã sau:

train_images = test_images = Dữ liệu là tập các hình ảnh nên buộc phải tiền xử trí nhằm nhận được công dụng tốt hơn, vậy bắt buộc chúng ta đang thực hiện nlỗi sau:

def read_image(file_path): #print(file_path) img = cv2.imread(file_path, cv2.IMREAD_COLOR) #print(img) return cv2.resize(img, (ROWS, COLS), interpolation=cv2.INTER_CUBIC) def prep_data(images): m = len(images) n_x = ROWS*COLS*CHANNELS X = np.ndarray((m,ROWS,COLS,CHANNELS), dtype=np.uint8) y = np.zeros((m,1)) print("X.shape is ".format(X.shape)) for i,image_file in enumerate(images) : image = read_image(image_file) X = np.squeeze(image.reshape((ROWS, COLS, CHANNELS))) if "dog" in image_tệp tin.lower() : y = 1 elif "cat" in image_file.lower() : y = 0 else : # for thử nghiệm data y = image_tệp tin.split("/").split(".") if i%5000 == 0 : print("Proceed of ".format(i, m)) return X,y X_train, y_train = prep_data(train_images)X_test, test_idx = prep_data(test_images)Sau Khi dấn được giá trị sẽ xử lý, họ thực hiện phân thành nhì tập train và validate với sinh sản one-hot vector

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=1)y_train_one_hot = to_categorical(y_train)num_classes = y_train_one_hot.shapey_val_one_hot = to_categorical(y_val)X_train_norm = X_train / 255# X_val_norm = X_val / 255Tiếp mang lại là tư tưởng mạng CNN được áp dụng bao hàm 4 Convolutional layers theo sau là 1 trong những Fully Connected Layer cùng thực hiện đầu ra output là Sigmoid.

Xem thêm: Ride-Hailing Là Gì

Mã Sản Phẩm = Sequential()Mã Sản Phẩm.add(Conv2D(32, (3,3), input_shape=(ROWS, COLS, CHANNELS), activation="relu"))Mã Sản Phẩm.add(MaxPooling2D(pool_kích thước = (2,2)))Model.add(Conv2D(64, (3,3), activation="relu"))Mã Sản Phẩm.add(MaxPooling2D(pool_kích thước = (2,2)))mã sản phẩm.add(Dropout(0.4))Model.add(Conv2D(128, (3,3), activation="relu"))Model.add(MaxPooling2D(pool_kích cỡ = (2,2)))mã sản phẩm.add(Dropout(0.4))mã sản phẩm.add(Conv2D(256, (3,3), activation="relu"))Model.add(MaxPooling2D(pool_kích thước = (2,2)))mã sản phẩm.add(Dropout(0.4))Mã Sản Phẩm.add(Conv2D(512, (1,1), activation="relu"))#Model.add(MaxPooling2D(pool_kích thước = (2,2)))model.add(Flatten())mã sản phẩm.add(Dropout(0.4))Mã Sản Phẩm.add(Dense(units=1trăng tròn, activation="relu"))Mã Sản Phẩm.add(Dense(units=2, activation="sigmoid"))Model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=)Mã Sản Phẩm.summary()Tiếp theo là đào tạo và huấn luyện mô hình bằng phương pháp áp dụng hàm fit có sawnx:

Model.fit(X_train_norm, y_train_one_hot, validation_data=(X_val_norm, y_val_one_hot), epochs=50, batch_form size = 64)Sau khi huấn luyện dứt, chúng ta cũng có thể demo predict bằng quy mô vừa huấn luyện và đào tạo bằng đoạn mã sau:

Kết luận

Bài viết này trình bày một vài kỹ năng cơ phiên bản đã từ bỏ tò mò về mạng nơ-ron tích chập với các kiến thức tương quan tương tự như trình diễn một ví dụ nhỏ về phân minh hình ảnh của chó và mèo bằng phương pháp sử dụng phương pháp trên. cũng có thể thấy rằng các framework Machine learning vẫn cung cấp cực tốt trong vấn đề thực hiện các quy mô dựa trên các mạng nơ-ron nhân tạo nhằm người tiêu dùng rất có thể ko đề xuất hiểu rõ về những mạng nơ-ron cũng có thể sử dụng. Tuy nhiên để có tác dụng tự Reviews và đổi mới các phương pháp của bạn dạng thân, người tiêu dùng vẫn yêu cầu mày mò kĩ về bản chất và phương pháp hoạt động vui chơi của các phương pháp này. Bài viết mang lại đây là ngừng cảm ơn hầu như bạn sẽ giành thời gian hiểu.