Keras를 사용하여 딥 러닝을위한 데이터 재구성


10

Keras의 초보자이며 라이브러리가 실제로 어떻게 작동하는지 이해하기 위해 MNIST 예제로 시작했습니다. Keras 예제 폴더에서 MNIST 문제의 코드 스 니펫은 다음과 같습니다.

import numpy as np
np.random.seed(1337)  # for reproducibility

from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten  
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils

batch_size = 128
nb_classes = 10
nb_epoch = 12

# input image dimensions
img_rows, img_cols = 28, 28
# number of convolutional filters to use
nb_filters = 32
# size of pooling area for max pooling
nb_pool = 2
# convolution kernel size
nb_conv = 3

# the data, shuffled and split between train and test sets
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(X_train.shape[0], 1, img_rows, img_cols)
X_test = X_test.reshape(X_test.shape[0], 1, img_rows, img_cols)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
..........

여기서 재구성 기능을 이해할 수 없습니다. 무엇을하고 있으며 왜 적용 했습니까?

답변:


8

mnist.load_data()MNIST 숫자에 구조, (nb_samples, 28, 28)즉 그레이 스케일 이미지 28x28을 나타내는 예제 당 2 차원이 제공됩니다.

그러나 Keras의 Convolution2D 레이어는 예제 당 3 차원으로 작동하도록 설계되었습니다. 4 차원 입력 및 출력이 있습니다. 여기에는 컬러 이미지 (nb_samples, nb_channels, width, height)가 포함되지만 더 중요한 것은 네트워크의 더 깊은 계층에 적용되며 각 예는 기능 맵 세트가되었습니다 (nb_samples, nb_features, width, height).

MNIST 숫자 입력에 대한 그레이 스케일 이미지에는 다른 CNN 레이어 디자인 (또는 다른 모양을 허용하기 위해 레이어 생성자에 대한 매개 변수)이 필요하거나 디자인에서 단순히 표준 CNN을 사용할 수 있으며 예제를 1 채널로 명시 적으로 표현해야합니다. 이미지. Keras 팀은 재구성이 필요한 후자의 접근 방식을 선택했습니다.


코드에 사용 된 "np.random.seed (1337)"의 논리를 설명해 주시겠습니까? 왜 1337입니까?
enterML

2
반복성을 제외하고 스크립트의 목적을 위해 1337에 대해 특별한 것은 없습니다. 다른 경우에 성공한 작업을 정확하게 반복 할 수 있도록 RNG를 심는 것이 좋습니다. 이 숫자는 해커를위한 내부 농담입니다 -urbandictionary.com/define.php?term=1337
Neil Slater
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.