데이터 마이닝 알고리즘 및 실습 (14) : kaggle에서 CNN (Convolutional Neural Network)을 구축하여 fashion_MNIST 구현

Convolutional Neural Network (Convolutional Neural Network) CNN (Convolutional Neural Network)은 convolution 연산을 통해 이미지 가장자리와 텍스처를 인식 한 후 연속 convolution을 통해 추상적 인 특징을 추출하고 최종적으로 이미지 인식을 실현하는 피드 포워드 신경망입니다. 영상 처리 성능이 뛰어나며 이미지 분류, 포지셔닝 및 기타 분야에서 널리 사용되며 다른 신경망 구조에 비해 컨볼 루션 신경망은 매개 변수가 상대적으로 적고 널리 사용됩니다.

목차

 CNN 네트워크의 일반 아키텍처

CNN은 fashion_MNIST 분류를 구현합니다.


 CNN 네트워크의 일반 아키텍처

Convolutional layer 는 데이터의 edge와 texture 분석을 완료하고 이미지 특징을 추출합니다 .3x3 convolution kernel로 이미지를 처리하면 9 픽셀이 1 픽셀로 변환되고 비선형 변환 레이어 가 뉴런 활성화 레이어입니다. , 뉴런 전달 임계 값 설정, 풀링 레이어 는 다운 샘플링, 이미지 픽셀 감소, 완전 연결 레이어 는 선형 변환 레이어, 유용한 특징을 추출 및 출력, 컨볼 루션 레이어 + 비선형 변환 레이어 + 풀링 레이어는 이미지를 작게 만드는 과정입니다. 그리고 더 두껍다 ;

컨볼 루션 레이어의 세 가지 중요한 매개 변수 : 컨볼 루션 커널의 크기 인 ksize, strides, padding (일반적으로 3 * 3 또는 5 * 5의 정사각형 행렬), 컨볼 루션 커널 이동의 범위 및 가장자리 처리 규칙 노트북에서 shift + tab 키를 사용하여 tensorflow.keras.layers.Cov2d () 함수의 매개 변수를 확인합니다.

Init signature:
tf.keras.layers.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,
    **kwargs,
)

풀링 레이어는 다운 샘플링 작업으로 이미지를 더 작게 만듭니다. 최대 풀링, 평균 풀링 등이 있습니다. 최대 풀링은 MaxPooling2D () 함수를 사용합니다. 함수의 매개 변수는 다음과 같습니다.

Init signature:
tf.keras.layers.MaxPooling2D(
    pool_size=(2, 2),
    strides=None,
    padding='valid',
    data_format=None,
    **kwargs,
)

CNN은 fashion_MNIST 분류를 구현합니다.

일반적으로 CPU는 CNN 네트워크 계산을 완료 할 수 없습니다. 여기서 kaggle에서 제공하는 GPU는 fashion_MNIST의 분류 모델을 구현하기 위해 CNN 네트워크를 구축하는 데 사용됩니다. Kaggle은 데이터 마이닝 및 딥에 대한 많은 예제와 솔루션을 포함하는 데이터 경쟁 플랫폼입니다. 탁월한 학습 플랫폼 인 learning : https://www.kaggle.com/notebooks/welcome , 노트북을 만들고 GPU 가속을 선택합니다.

GPU 가속 활성화 확인 :

컨볼 루션 신경망의 입력 이미지는 배치 수, 이미지 길이, 이미지 높이 및 채널 수인 4 차원입니다.

import tensorflow as tf
from tensorflow import keras
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

(train_image,train_lable),(test_image,test_lable)=tf.keras.datasets.fashion_mnist.load_data()
train_image.shape

# 将图像维度扩张到4维数据
train_images=np.expand_dims(train_image,-1)
test_images=np.expand_dims(test_image,-1)
train_images.shape

model=tf.keras.Sequential([tf.keras.layers.Conv2D(32,(3,3),input_shape=train_images.shape[1:],activation="relu"),
           tf.keras.layers.Dropout(0.5),
           tf.keras.layers.MaxPooling2D(),
           tf.keras.layers.Conv2D(32,(3,3),activation="relu"),
           tf.keras.layers.Dropout(0.5),
           tf.keras.layers.GlobalMaxPooling2D(),
           tf.keras.layers.Dense(10,activation="softmax")
])
model.summary()


model.compile(optimizer="adam",loss="sparse_categorical_crossentropy",metrics=["acc"])

history=model.fit(train_images,
                  train_lable,
                  epochs=5,
                  validation_data=(test_images,test_lable)
                 )
model.evaluate(test_images,test_lable)
#plt.plot(history.epoch,history.history.get('loss'))
plt.plot(history.epoch,history.history.get('acc'))

이 신경망의 구조와 매개 변수 수를 볼 수 있습니다.

정확도 매핑 :

추천

출처blog.csdn.net/yezonggang/article/details/106496413