केरस का उपयोग करके गहन सीखने के लिए डेटा को फिर से तैयार करना


10

मैं केरस के लिए एक शुरुआती हूं और मैंने एमएनआईएसटीटी उदाहरण के साथ शुरू किया है यह समझने के लिए कि पुस्तकालय वास्तव में कैसे काम करता है। करस उदाहरण फ़ोल्डर में 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')
..........

मैं यहाँ reshape फ़ंक्शन को समझने में असमर्थ हूँ। यह क्या कर रहा है और हमने इसे क्यों लागू किया है?

जवाबों:


8

mnist.load_data()संरचना के साथ MNIST अंकों की आपूर्ति करता है (nb_samples, 28, 28)अर्थात 2 आयामों के साथ उदाहरण एक greyscale छवि 28x28 का प्रतिनिधित्व करता है।

Keras में Convolution2D परतें, उदाहरण के लिए 3 आयामों के साथ काम करने के लिए डिज़ाइन की गई हैं। उनके पास 4-आयामी इनपुट और आउटपुट हैं। यह रंग छवियों को कवर करता है (nb_samples, nb_channels, width, height), लेकिन इससे भी महत्वपूर्ण बात यह है कि यह नेटवर्क की गहरी परतों को कवर करता है, जहां प्रत्येक उदाहरण फीचर मैप्स का एक सेट बन गया है (nb_samples, nb_features, width, height)

MNIST अंक इनपुट के लिए greyscale छवि को या तो एक अलग CNN लेयर डिज़ाइन की आवश्यकता होगी (या किसी अलग आकृति को स्वीकार करने के लिए लेयर कंस्ट्रक्टर के लिए एक परम), या डिज़ाइन बस एक मानक CNN का उपयोग कर सकता है और आपको स्पष्ट रूप से उदाहरणों को 1-चैनल के रूप में व्यक्त करना होगा इमेजिस। केरस टीम ने बाद के दृष्टिकोण को चुना, जिसे फिर से आकार देने की आवश्यकता है।


क्या आप कृपया कोड में प्रयुक्त "np.random.seed (1337)" के पीछे के तर्क की व्याख्या कर सकते हैं? क्यों 1337?
13-16

2
दोहराव को छोड़कर स्क्रिप्ट के प्रयोजनों के लिए 1337 के बारे में कुछ भी विशेष नहीं है। अपने RNG को बीज बनाना अच्छा है, ताकि आप किसी अन्य अवसर पर अपने सफल काम को दोहरा सकें। संख्या हैकर्स के लिए अंदर के मज़ाक का एक सा है - urbandfox.com/define.php?term=1337
नील स्लेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.