Début des études: samedi 7 décembre
Matériel pédagogique, etc.: ・ Miyuki Oshige "Détails! Note d'introduction à Python3 »(Sotech, 2017): 12/7 (sam) -12/19 (jeu) lu ・ Progate Python course (5 cours au total): 12/19 (jeudi) -12/21 (samedi) fin ・ Andreas C. Müller, Sarah Guido "(titre japonais) Apprentissage automatique à partir de Python" (O'Reilly Japon, 2017): 21/12 (sam) -23 décembre (sam) ・ Kaggle: Real or Not? NLP with Disaster Tweets: Publié du samedi 28 décembre au vendredi 3 janvier Ajustement ・ Wes Mckinney "(titre japonais) Introduction à l'analyse de données par Python" (O'Reilly Japon, 2018): 1/4 (mercredi) à 1/13 (lundi) lire ・ Yasuki Saito "Deep Learning from Zero" (O'Reilly Japan, 2016): 1/15 (mer) -1/20 (lun) ・ ** François Chollet «Deep Learning avec Python et Keras» (Queep, 2018): 1/21 (mar.) ~ **
p.186 Chapitre 5 Fin de la lecture jusqu'à l'apprentissage profond de la vision par ordinateur.
Bien que le livre expliquait le réseau de neurones à l'aide de caractères manuscrits de l'ensemble de données keras, j'ai osé le classer en utilisant l'ensemble de données iris de sklearn.
Importation de divers modules
from keras import models, layers
from keras.utils.np_utils import to_categorical
from sklearn import datasets
from sklearn.model_selection import train_test_split
Préparation
#Lire les données des jouets
iris = datasets.load_iris()
#Vérifiez le contenu du répertoire,'data'Quand'target'Définir chacun
dir(iris)
x = iris.data
y = iris.target
#Vérifiez la forme des données
print([x.shape, y.shape])
print(iris.fearture_names)
print(x[0])
x.shape = (150, 4), y.shape = (150, )
Vérifiez l'élément de x dans iris.feature_names.
Confirmez que les quatre colonnes de x correspondent respectivement à ['longueur sépale (cm)', 'largeur sépale (cm)', 'longueur pétale (cm)', 'largeur pétale (cm)'].
y vaut 0 à 2 et correspond à 3 types d'iris.
Normalisation
def normalization(x):
mean = x.mean(axis = 0)
std = x.std(axis = 0)
x -= mean
x /= std
return x
x = normalization(x)
y = to_categorical(y)
En soustrayant la moyenne de x et en divisant par l'écart type, chaque élément est normalisé de sorte que "le centre est 0 et l'écart type 1". y vectorise également 0 ou 1 avec to_categorical.
Séparé pour la formation et les tests
x_train, x_test, y_train, y_test =
train_test_split(x, y, train_size = 0.7, random_state = 3)
print([x_train.shape, x_test.shape, y_train.shape, y_test.shape])
Divisé pour la formation et pour les tests à 7: 3. Puisque Shuffle a la valeur True par défaut, seul random_state est défini.
Les éléments sont [(105, 4), (45, 4), (105, 3), (45, 3)], respectivement, et il est confirmé qu'ils peuvent être divisés correctement.
Construction du modèle: 2 couches
model = models.Sequential()
model.add(layers.Dense(64, activation = 'relu', input_shape = (x.shape[1], )))
model.add(layers.Dense(64, activation = 'relu'))
model.add(layers.Dense(3, activation = 'softmax'))
model.summary()
model.compile(optimizer = 'rmsprop', loss = 'categorical_crossentropy', metrics = ['accuracy'])
ReLU est utilisé pour la fonction d'activation de chaque couche, et softmax est utilisé pour la fonction d'activation de la dernière couche. (Voir p.119 Tableau 4-1)
Visualisez chaque couche avec model.summary ()
Pour l'optimiseur, j'ai choisi ceci dans la description que rmsprop est presque suffisant.
Apprentissage et évaluation
model.fit(x_train, y_train, epochs = 100, batch_size = 1, verbose=0)
result = model.evaluate(x_test, y_test)
print(result)
#[0.15816927485995821, 0.9555555582046509]
epochs vaut 100 pour le moment, batch_size vaut 1 naturellement.
Comme mentionné ci-dessus, même s'il s'agissait d'une structure simple, le résultat était une précision de 96%.
Puisqu'il existe trois types d'iris, l'erreur qui s'est produite car ** layer.Dense (3) ** doit être remplacée par ** layer.Dense (1) . Il doit être modifié en fonction du nombre de sorties requises. ( 10 pièces de 0 à 9 pour les caractères manuscrits **)
Ce n'est pas une erreur, mais si l'enregistrement n'est pas requis, il peut être traité en définissant l'argument verbose = 0.
Recommended Posts