Pembentukan kembali data untuk pembelajaran mendalam menggunakan Keras

10

Saya seorang pemula untuk Keras dan saya sudah mulai dengan contoh MNIST untuk memahami bagaimana sebenarnya perpustakaan bekerja. Cuplikan kode masalah MNIST dalam folder Keras contoh diberikan sebagai:

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')
..........

Saya tidak dapat memahami fungsi pembentukan ulang di sini. Apa yang dilakukannya dan mengapa kami menerapkannya?

enterML
sumber

Jawaban:

8

mnist.load_data()memasok digit MNIST dengan struktur (nb_samples, 28, 28)yaitu dengan 2 dimensi per contoh mewakili gambar skala abu-abu 28x28.

Lapisan Convolution2D dalam Keras dirancang untuk bekerja dengan 3 dimensi per contoh. Mereka memiliki input dan output 4 dimensi. Ini mencakup gambar berwarna (nb_samples, nb_channels, width, height), tetapi yang lebih penting, ini mencakup lapisan jaringan yang lebih dalam, di mana masing-masing contoh telah menjadi seperangkat peta fitur (nb_samples, nb_features, width, height).

Gambar skala abu-abu untuk input digit MNIST akan membutuhkan desain lapisan CNN yang berbeda (atau param ke konstruktor lapisan untuk menerima bentuk yang berbeda), atau desain hanya dapat menggunakan CNN standar dan Anda harus secara eksplisit mengungkapkan contoh sebagai 1-saluran gambar-gambar. Tim Keras memilih pendekatan yang terakhir, yang perlu dibentuk kembali.

Neil Slater
sumber
Bisakah Anda jelaskan logika di balik "np.random.seed (1337)" yang digunakan dalam kode? Kenapa 1337?
masukkan ML
2
Tidak ada yang istimewa tentang 1337 untuk keperluan skrip kecuali pengulangan. Ini adalah praktik yang baik untuk menabur RNG Anda sehingga Anda dapat mengulangi pekerjaan sukses Anda tepat pada kesempatan lain. Jumlah ini sedikit lelucon dalam untuk peretas - urbandictionary.com/define.php?term=1337
Neil Slater