Fully connected layer là gì

     

Trong mạng nơ-ron, mạng nơ-ron tích chập (ConvNets tuyệt CNNs, Convolutional Neural Network) là một trong số những phương pháp bao gồm để thực hiện nhấn dạng hình hình ảnh, phân loại hình hình họa. CNN được áp dụng rộng thoải mái trong một trong những nghành như vạc hiện tại đối tượng người tiêu dùng, nhận dạng khuôn phương diện, ..... Bài viết này trình diễn một số trong những kiến thức cơ bạn dạng đang từ bỏ tìm hiểu về mạng nơ-ron tích chập với những kỹ năng và kiến thức tương quan tương tự như trình diễn một ví dụ nhỏ về khác nhau hình hình ảnh của chó cùng mèo bằng cách áp dụng phương thức trên.

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

Tìm phát âm về CNN

Mô hình neural network

Mạng nơ-ron tự tạo (Neural Network - NN) là một mô hình xây dựng mô rộp cách thức buổi giao lưu của mạng nơ-ron thần kinh. Kết hợp với các kỹ năng học tập sâu (Deep Learning - DL), mạng nơ-ron nhân tạo sẽ thay đổi một nguyên tắc khôn xiết trẻ trung và tràn trề sức khỏe mang lại kết quả tốt nhất mang lại nhiều bài bác toán nặng nề nhỏng dấn dạng hình họa, tiếng nói tuyệt xử lý ngôn ngữ tự nhiên và thoải mái.

Lịch sử cải tiến và phát triển của mạng nơ-ron nhân tạo bắt đầu lúc Warren McCulloch cùng Walter Pitts vẫn tạo ra một mô hình tính toán thù đến mạng nơ-ron dựa vào các thuật toán thù Hotline là lô ghích ngưỡng vào khoảng thời gian 1943. Tuy nhiên, để gia công quen cùng gọi được một vài kỹ năng cơ bản về quy mô mạng nơ-ron nhân tạp, họ đang bàn cho hồi quy logictics - sản phẩm công nghệ hoàn toàn có thể coi là quy mô neural network đơn giản dễ dàng duy nhất cùng với chỉ đầu vào layer với output layer.

Giả sử chúng ta gồm bài toán thù dựa đân oán tài năng thừa nhận đối chọi phục vụ dựa vào khoảng cách và thời khắc bắt buộc giao trong thời gian ngày dựa vào dữ liệu đang mang lại trước. Từ kia ta rất có thể hiểu rằng với những bộ dữ liệu x, y mang lại sẵn với x có nhì đặc trưng x1x_1x1​ cùng x2x_2x2​ theo thứ tự là khoảng cách với thời gian yêu cầu giao trong thời gian ngày, chúng ta sẽ áp dụng những phương pháp để tìm kiếm được khoảng chừng y^=f(w,x)widehaty = f(w, x)y​=f(w,x) làm sao cho sát với mức giá trị y độc nhất.

thường thì, chúng ta thường xuyên áp dụng hàm f(w,x)=wTxf(w, x) = w^Txf(w,x)=wTx để dễ tính tân oán, tuy vậy áp ra output y là Xác Suất giao dịch gồm được trao hay là không nên nhằm đầu ra thỏa mãn nhu cầu được điều kiện gồm dạng giống như Tỷ Lệ tức là luôn luôn có giá trị trong khoảng từ bỏ 0 đến 1 bọn họ hay thực hiện 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 Call là hàm sigmod làm hàm activation.

lúc 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 định nghĩa là cross-entropy của y(i)y^(i)y(i) cùng y^(i)widehaty^(i)y​(i) nlỗi 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 trên toàn thể tài liệu được xem bằng phương pháp lấy tổng các quý hiếm trên. Bằng bí quyết buổi tối ưu hàm mất mát này, hay bởi phương thức đạo hàm gradient, chúng ta có thể có thể nhận được mô hình cân xứng độc nhất đến bài toán tương tự như cỗ tài liệu đang mang lại. Tuy nhiên, dù nỗ lực tuy vậy hầu như quý giá ước lượng trường đoản cú hàm trên vẫn đang còn một số trong những chênh lệch với giá trị thực tiễn, vì vậy nhằm bảo vệ mang đến tính khách quan, người ta thường thêm một quý hiếm b hay w0w_0w0​ vào nhằm tính bằng cách thực hiện f(w,x)=wTx+w0f(w, x) = w^Tx + w_0f(w,x)=wTx+w0​ quý hiếm này là quý giá bias rất có thể hiểu là phần bù mang đến mọi chênh lệch khó/cần yếu rất tiểu từ bỏ bước trên.

Thông thường các bước tính tân oán của một quy mô mạng nơ-ron nhân tạo thường xuyên được bộc lộ bởi một biểu thứ tính tân oán để có thể quan liêu liền kề trực quan hơn. Dưới đây là một biểu đồ gia dụng trình bày cho bài xích tân oán phân một số loại dựa vào hồi quy logictics.

*

Tấm hình từ website https://sebastianraschka.com/faq/docs/logisticregr-neuralnet.html

Convolutional Neural Network

Như trình diễn sinh sống bên trên, Convolutional Neural Network là một trong trong những phương pháp thiết yếu Lúc áp dụng dữ liệu về ảnh. Kiến trúc mạng này lộ diện vày các cách thức giải pháp xử lý dữ liệu hình họa thường xuyên sử dụng quý giá của từng px. Vậy đề xuất với 1 hình họa có mức giá trị form size 100x100 thực hiện kênh RGB ta có tổng cộng ta có 100 * 100 * 3 bởi 30000 nút sinh hoạt lớp đầu vào. Điều đó kéo theo việc có một số lượng lớn weight với bias dẫn mang đến mạng nơ-ron trlàm việc nên vượt béo phì, tạo trở ngại đến vấn đề tính tân oán. mà hơn nữa, chúng ta cũng có thể thấy rằng thông tin của các pixel thường chỉ chịu tác động ảnh hưởng do các pixel ngay gần nó, vậy cho nên việc bỏ qua mất một số trong những nút ở tầng nguồn vào trong mỗi lần giảng dạy sẽ không còn làm cho sút độ đúng đắn của mô hình. Vậy đề xuất người ta áp dụng cửa số tích chập nhằm xử lý vụ việc số lượng tmê man số béo mà lại vẫn trích xuất được đặc trưng của ảnh.

Về phương diện kỹ thuật, vào quy mô học sâu CNN, mô hình ảnh đầu vào đang gửi nó qua một loạt những lớp tích chập cùng với những bộ lọc, tiếp đến đi học Pooling, rồi tiếp sau là các lớp được kết nối không hề thiếu (FC — fully connected layers) với sau cùng vận dụng hàm softmax để phân nhiều loại một đối tượng dựa trên quý hiếm Xác Suất trong khoản từ 0 cho 1.

Convolution Layer

Convolution (lớp tích chập) là lớp trước tiên trích xuất các đặc tính từ hình hình họa. Tham mê số lớp này bao gồm một tập hòa hợp những cỗ thanh lọc có thể học được. Các bộ thanh lọc đều nhỏ tuổi thường sẽ có form size hai phía đầu tiên khoảng tầm 3x3 hoặc 5x5, .... cùng có độ sâu bằng với độ sâu của nguồn vào nguồn vào. Bằng cách tđuổi dần bộ lọc theo hướng ngang và dọc bên trên hình ảnh, bọn chúng nhận được một Feature Map chứa các đặc trưng được trích xuất từ bên trên hình ảnh nguồn vào.

Xem thêm:

Quá trình trượt những bộ thanh lọc thông thường sẽ có những quý hiếm được khí cụ bao gồm:

padding: giải pháp cỗ đệm của bộ thanh lọc tốt chính là phần màu sắc xám được thêm vào ảnhstride: giải pháp bước khiêu vũ trong quá trình triển khai.

Hình minch họa sau để giúp họ dễ tưởng tượng hơn về quá trình trên:

*

Bức Ảnh chụp từ bỏ trang CS231n Convolutional Neural Networks for Visual Recognition, nhằm nắm vững rộng về Convolution Layer phần đa người hoàn toàn có thể hiểu tiếp về phần lý giải sinh hoạt trang này.

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

Pooling layer

Pooling layer thường được dùng thân những convolutional layer, để sút kích thước tài liệu tuy vậy 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 sút vấn đề tính toán trong Model. Trong quy trình này, phép tắc về stride và padding vận dụng nhỏng phnghiền tính convolution bên trên ảnh.

*

Tấm hình từ bỏ 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 đang học được kha khá các điểm lưu ý của ảnh thì tensor của output của layer sau cùng sẽ tiến hành là phẳng thành vector và chuyển vào một trong những lớp được liên kết nhỏng một mạng nơ-ron. Với FC layer được kết phù hợp với các khả năng lại cùng nhau nhằm tạo ra một mô hình. Cuối cùng thực hiện softmax hoặc sigmoid nhằm phân nhiều loại đầu ra.

*

Phân các loại ảnh

Bài toán phân loại hình họa chó với mèo nghe có vẻ như đơn giản, nhưng lại nó chỉ được xử lý hiệu quả vào vài năm vừa qua bằng phương pháp thực hiện mạng nơ-ron tích hợp học sâu. Bằng những tiến hành ví dụ này, bọn họ đã đọc thêm được về Convolutional Neural Network lân cận rất nhiều định hướng vẫn trình diễn bên trên.

Dữ liệu

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

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

Trước hết bọn họ import các thư 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 đó là có mang một trong những hằng số nhằm dễ ợt sử dungj:

TRAIN_DIR = "./train/"TEST_DIR = "./test1/"ROWS = 64COLS = 64CHANNELS = 3Từ kia họ đem đường dẫn dữ liệu bằng đoạn mã sau:

train_images = test_images = Dữ liệu là tập các hình họa buộc phải cần chi phí cách xử trí để thu được hiệu quả tốt rộng, vậy đề xuất họ vẫn triển khai nhỏng 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_tệp tin.lower() : y = 0 else : # for test data y = image_file.split("/")<-1>.split(".")<0> 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 Lúc dìm được giá trị vẫn giải pháp xử lý, chúng ta triển khai phân thành nhì tập train cùng 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.shape<1>y_val_one_hot = to_categorical(y_val)X_train_norm = X_train / 255# X_val_norm = X_val / 255Tiếp mang đến là khái niệm mạng CNN được áp dụng bao hàm 4 Convolutional layers theo sau là một trong Fully Connected Layer với áp dụng Áp sạc ra là Sigmoid.

Model = 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_form size = (2,2)))Model.add(Conv2D(64, (3,3), activation="relu"))model.add(MaxPooling2D(pool_size = (2,2)))Model.add(Dropout(0.4))mã sản phẩm.add(Conv2D(128, (3,3), activation="relu"))Model.add(MaxPooling2D(pool_size = (2,2)))mã sản phẩm.add(Dropout(0.4))model.add(Conv2D(256, (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))mã sản phẩm.add(Conv2D(512, (1,1), activation="relu"))#Mã Sản Phẩm.add(MaxPooling2D(pool_kích cỡ = (2,2)))Mã Sản Phẩm.add(Flatten())Model.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=<"accuracy">)mã sản phẩm.summary()Tiếp theo là đào tạo và huấn luyện quy mô bằng phương pháp áp dụng hàm fit bao gồm sawnx:

mã sản phẩm.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 và giảng dạy hoàn thành, chúng ta cũng có thể test predict bằng mô hình vừa đào tạo và huấn luyện bởi đoạn mã sau:

image = X_train<0>test_pred = Mã Sản Phẩm.predict_classes(image.reshape(1, 64, 64, 3))plt.figure(figsize=(4,2))plt.imshow(image)plt.show()print("Our Model Prediction: ".format(test_pred))Trong khi bằng phương pháp sử dụng tập chạy thử và hàm evaluate họ cũng hoàn toàn có thể tính toán điểm số của mô hình. Sau khi tính thì tác dụng chiếm được khá cao ~ 90.89%.

Kết luận

Bài viết này trình diễn một trong những kiến thức và kỹ năng cơ bản sẽ trường đoản cú khám phá về mạng nơ-ron tích chập và các kỹ năng và kiến thức liên quan cũng tương tự trình diễn một ví dụ bé dại về phân minh hình hình họa của chó và mèo bằng phương pháp áp 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 việc sử dụng những mô hình dựa trên những mạng nơ-ron nhân tạo nhằm người dùng hoàn toàn có thể không yêu cầu làm rõ về các mạng nơ-ron cũng hoàn toàn có thể thực hiện. Tuy nhiên nhằm có khả năng từ Reviews cùng cải tiến các cách thức của bạn dạng thân, người tiêu dùng vẫn đề nghị tìm hiểu kĩ về thực chất với bí quyết hoạt động của các phương pháp này. Bài viết đến đấy là dứt cảm ơn phần lớn tín đồ đang giành thời hạn phát âm.


Chuyên mục: Đầu tư