Fully Connected Layer Là Gì

  -  

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

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

Quý Khách đã xem: Fully connected layer là gìquý khách hàng đã 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à một trong những quy mô xây dựng tế bào phỏng phương thức hoạt động của mạng nơ-ron thần tởm. Kết phù hợp với các kĩ thuật học sâu (Deep Learning - DL), mạng nơ-ron tự tạo sẽ đổi mới một vẻ ngoài siêu trẻ trung và tràn trề sức khỏe mang đến công dụng tốt nhất cho nhiều bài xích toán khó khăn như nhận dạng hình họa, các giọng nói giỏi giải pháp xử lý ngữ điệu thoải mái và tự nhiên.

Lịch sử phát triển của mạng nơ-ron tự tạo bước đầu Khi Warren McCulloch và Walter Pitts đã tạo nên một quy mô tính toán mang đến mạng nơ-ron dựa trên các thuật tân oán gọi là súc tích ngưỡng vào thời điểm năm 1943. Tuy nhiên, để triển khai thân quen với đọc được một số trong những kiến thức cơ bạn dạng về quy mô mạng nơ-ron nhân tạp, bọn họ vẫn bàn đến hồi quy logictics - trang bị rất có thể coi là mô hình neural network đơn giản tuyệt nhất với chỉ input layer và output layer.

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

Đôi khi, bọn họ thường xuyên sử 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 cổng đầu ra y là tỷ lệ đơn hàng có được nhận hay là không buộc phải để cổng đầu ra vừa lòng được điều kiện bao gồm dạng tương tự phần trăm Có nghĩa là luôn có mức giá trị trong vòng trường đoản cú 0 cho 1 họ hay áp dụng hàm logictics θ(z)=11+e−z heta(z) = frac11+e^-zθ(z)=1+e−z1​ với z=f(w,x)z = f(w, x)z=f(w,x) hay được Hotline là hàm sighack làm cho hàm activation.

Khi kia, hàm lỗi của một cho mỗi điểm x(i),y(i)x^(i), y^(i)x(i),y(i) được có mang là cross-entropy của y(i)y^(i)y(i) cùng 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 kia hàm này bên trên tổng thể dữ liệu được xem bằng cách lấy tổng các cực hiếm trên. Bằng biện pháp buổi tối ưu hàm mất mát này, hay bởi cách thức đạo hàm gradient, bạn cũng có thể hoàn toàn có thể chiếm được quy mô phù hợp tuyệt nhất mang đến bài toán tương tự như bộ dữ liệu vẫn mang đến. Tuy nhiên, dù nỗ lực nhưng mà phần nhiều quý giá ước tính trường đoản cú hàm trên vẫn đang còn một số chênh lệch với giá trị thực tế, bởi vậy nhằm đảm bảo an toàn mang lại tính rõ ràng, fan ta thường thêm một giá trị b xuất xắc w0w_0w0​ vào để tính bằng cách sử dụng f(w,x)=wTx+w0f(w, x) = w^Tx + w_0f(w,x)=wTx+w0​ quý giá này là cực hiếm bias có thể hiểu là phần bù đến phần nhiều chênh lệch khó/chẳng thể cực tè tự bước bên trên.

thường thì công việc tính tân oán của một quy mô mạng nơ-ron tự tạo thường xuyên được biểu đạt bằng một biểu thứ tính toán thù nhằm rất có thể quan tiền liền kề trực quan liêu rộng. Dưới đấy là một biểu đồ vật trình bày cho bài tân oán phân loại dựa vào hồi quy logictics.


*

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

Convolutional Neural Network

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

Xem thêm: Màng Bopp Là Gì ? Bao Pp Dệt Ghép Màng Bopp Là Gì

Convolution Layer

Quá trình tđuổi các bộ thanh lọc thường có những quý giá được nguyên tắc bao gồm:

padding: hình thức bộ đệm của cục lọc tốt chính là phần màu xám được phân phối ảnhstride: hình thức bước khiêu vũ trong quá trình tiến hành.

Hình minc họa sau sẽ giúp bọn họ dễ tưởng tượng hơn về quá trình trên:

*

Hình ảnh chụp từ bỏ trang CS231n Convolutional Neural Networks for Visual Recognition, để nắm rõ hơn về Convolution Layer các tín đồ rất có thể phát âm tiếp về phần phân tích và lý giải sinh sống trang này.

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

Pooling layer

Pooling layer thường được sử dụng thân các convolutional layer, để giảm form size dữ liệu nhưng lại vẫn duy trì được những ở trong tính đặc biệt. Kích thước tài liệu giảm giúp bớt bài toán tính tân oán trong mã sản phẩm. Trong quy trình này, luật lệ về stride với padding vận dụng nhỏng phxay tính convolution trên hình ảnh.


*

Bức Ảnh từ bỏ trang https://www.geeksforgeeks.org/cnn-introduction-to-pooling-layer/

Fully connected layer

Sau Khi hình ảnh được truyền trải qua không ít convolutional layer cùng pooling layer thì model sẽ học tập được kha khá các Đặc điểm của hình ảnh thì tensor của output của layer ở đầu cuối sẽ tiến hành là phẳng thành vector cùng chuyển vào một lớp được kết nối như một mạng nơ-ron. Với FC layer được kết phù hợp với những thiên tài lại cùng nhau nhằm tạo thành một mô hình. Cuối thuộc thực hiện softmax hoặc sigmoid để phân các loại cổng output.

*

Phân nhiều loại ảnh

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

Dữ liệu

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

Xem thêm: Crypto Là Gì? Bí Kíp Đầu Tư Crypto Là Gì? Cách Thức Đầu Tư Crypto Hiệu Quả

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

Đầu tiên chúng ta import các tlỗi viện bằng đ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 chính là định nghĩa một số trong những hằng số để dễ ợt sử dungj:

TRAIN_DIR = "./train/"TEST_DIR = "./test1/"ROWS = 64COLS = 64CHANNELS = 3Từ kia chúng ta đem đường truyề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 đề nghị phải tiền xử trí để nhận được kết quả giỏi rộng, vậy yêu cầu bọn họ vẫn tiến hành như 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("/").split(".") if i%5000 == 0 : print("Proceed of ".format(i, m)) return X,y X_train, y_train = prep_data(train_images)X_kiểm tra, test_idx = prep_data(test_images)Sau khi nhận giá tốt trị đang cách xử lý, bọn họ tiến hành chia thành nhì tập train cùng validate và tạo ra one-hot vector

mã sản phẩm = Sequential()model.add(Conv2D(32, (3,3), input_shape=(ROWS, COLS, CHANNELS), activation="relu"))model.add(MaxPooling2D(pool_size = (2,2)))model.add(Conv2D(64, (3,3), activation="relu"))mã sản phẩm.add(MaxPooling2D(pool_kích cỡ = (2,2)))Mã Sản Phẩm.add(Dropout(0.4))Mã Sản Phẩm.add(Conv2D(128, (3,3), activation="relu"))Mã Sản Phẩm.add(MaxPooling2D(pool_kích cỡ = (2,2)))Model.add(Dropout(0.4))mã sản phẩm.add(Conv2D(256, (3,3), activation="relu"))model.add(MaxPooling2D(pool_size = (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)))Model.add(Flatten())mã sản phẩm.add(Dropout(0.4))Model.add(Dense(units=120, activation="relu"))Mã Sản Phẩm.add(Dense(units=2, activation="sigmoid"))Model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=)Model.summary()Tiếp theo là huấn luyện quy mô bằng phương pháp sử dụng hàm fit tất cả 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 Lúc huấn luyện xong, bạn cũng có thể thử predict bởi quy mô vừa đào tạo và giảng dạy bởi đ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 và kiến thức cơ phiên bản sẽ từ tò mò về mạng nơ-ron tích chập và những kiến thức và kỹ năng liên quan cũng giống như trình bày một ví dụ nhỏ về phân biệt hình hình họa của chó và mèo bằng cách áp dụng phương pháp bên trên. Có thể thấy rằng những framework Machine learning đã hỗ trợ rất tốt trong bài toán thực hiện các quy mô dựa trên những mạng nơ-ron nhân tạo để người tiêu dùng hoàn toàn có thể ko buộc phải làm rõ về những mạng nơ-ron cũng có thể thực hiện. Tuy nhiên để có tác dụng từ nhận xét với cải tiến các phương thức của phiên bản thân, người dùng vẫn phải tò mò kĩ về bản chất với cách hoạt động của các phương thức này. Bài viết đến đấy là xong xuôi cảm ơn số đông người đang giành thời gian gọi.