[PYTHON] Premiers pas avec la traduction japonaise du modèle séquentiel Keras

Motivation

J'ai eu l'occasion d'écrire Keras, alors je l'ai traduit en japonais. Getting started with the Keras Sequential model Le modèle séquentiel est réalisé en empilant des couches. Vous pouvez créer un séquentiel en donnant une instance du calque au constructeur du séquentiel. Le calque étant donné le Dense, ʻActivation` ci-dessous (au fait, Dense est le soi-disant réseau de neurones entièrement connecté).

from Keras.models import Sequential
model = Sequential([
	Dense(32, input_dim=784),
	Activation('relu'),
	Dense(10),
	Activation('softmax'),
])

Vous pouvez également ajouter des couches en utilisant la méthode .add ().

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))

Specifying the input shape Le modèle doit savoir ce qui entre dans le nombre de dimensions de l'entrée. Par conséquent, il est nécessaire de donner des informations sur la dimension d'entrée à la première couche du modèle séquentiel (les autres couches peuvent déduire automatiquement le nombre de dimensions). Il existe trois manières de procéder.

  1. Passer à l'argument input_shape. Passer par tuple. Passer par Aucun au lieu d'un entier sera interprété comme un nombre positif. La taille du lot n'est pas incluse.
  2. Transmettez l'argument batch_input_shape. Cela inclut la taille du lot. C'est une technique utile lorsque vous souhaitez fixer la taille du lot.
  3. Les couches bidimensionnelles telles que Dense peuvent spécifier le nombre de dimensions avec l'argument input_dim. Pour les couches tridimensionnelles, spécifiez l'argument input_length en plus de l'argument input_dim.

Voici ce que j'ai mis dans mon code:

	model = Sequential()
	model.add(Dense(32, input_shape=(784,)))
	model = Sequential()
	model.add(Dense(32, batch_input_shape=(None, 784)))
	# note that batch dimension is "None" here,(Bien que la taille du lot soit Aucune)
	# so the model will be able to process batches of any size(Vous pouvez maintenant connaître la taille de lot que vous avez)
	model = Sequential()
	model.add(Dense(32, input_dim=784))

Et les trois codes suivants ont la même signification.

	model = Sequential()
	model.add(LSTM(32, input_shape=(10, 64)))
	model = Sequential()
	model.add(LSTM(32, batch_input_shape=(None, 10, 64)))
	model = Sequential()
	model.add(LSTM(32, input_length=10, input_dim=64))

The Merge layer Il est possible d'intégrer plusieurs instances séquentielles de sorte qu'une sortie soit sortie. Le séquentiel de sortie peut être superposé sur un nouveau séquentiel. Voici un exemple et un diagramme conceptuel des couches.

from keras.layers import Merge

left_branch = Sequential()
left_branch.add(Dense(32, input_dim=784))

right_branch = Sequential()
right_branch.add(Dense(32, input_dim=784))

merged = Merge([left_branch, right_branch], mode='concat')

final_model = Sequential()
final_model.add(merged)
final_model.add(Dense(10, activation='softmax'))

two_branches_sequential_model.png

La fusion a plusieurs modes qui peuvent décrire comment fusionner deux tenseurs.

Toute formule de calcul peut être décrite dans l'argument mode à l'aide d'une formule lambda ou similaire.

merged = Merge([left_branch, right_branch], mode=lambda x, y: x - y)

Si vous voulez construire un modèle complexe qui ne peut pas être représenté par Sequential et Merge, vous devez vous référer à l'API de fonction.

Compilation Il est nécessaire de définir le processus de formation avant de former le modèle. Cela se fait par la méthode compile. La méthode compile prend les trois arguments suivants.

# for a multi-class classification problem
model.compile(optimizer='rmsprop',
			  loss='categorical_crossentropy',
			  metrics=['accuracy'])

# for a binary classification problem
model.compile(optimizer='rmsprop',
			  loss='binary_crossentropy',
			  metrics=['accuracy'])

# for a mean squared error regression problem
model.compile(optimizer='rmsprop',
			  loss='mse')

Training Dans Keras, la formation est effectuée avec l'entrée et le libellé du tableau Numpy. La fonction «fit» est souvent utilisée dans la phase d'apprentissage.

# for a single-input model with 2 classes(binary):(Classification à deux classes)

model = Sequential()
model.add(Dense(1, input_dim=784, activation='softmax'))
model.compile(optimizer='rmsprop',
			  loss='binary_crossentropy',
			  metrics=['accuracy'])

# generate dummy data(Créer des données d'entrée appropriées)
import numpy as np
data = np.random.random((1000, 784))
labels = np.random.randint(2, size=(1000, 1))

# train the model, interating on the data in batches(Apprenez avec la taille de lot 32)
# of 32 samples
model.fit(data, labels, nb_epoch=10, batch_size=32)
# for a multi-input model with 10 classes:(Classement en 10 classes)

left_branch = Sequential()
left_branch.add(Dense(32, input_dim=784))

right_branch = Sequential()
right_branch.add(Dense(32, input_dim=784))

merged = Merge([left_branch, right_branch], mode='concat')

model = Sequential()
model.add(merged)
model.add(Dense(10, activation='softmax'))

model.compile(optimizer='rmsprop',
			  loss='categorical_crossentropy',
			  metrics=['accuracy'])

# generate dummy data(Créer des données d'entrée appropriées)
import numpy as np
from keras.utils.np_utils import to_categorical
data_1 = np.random.random((1000, 784))
data_2 = np.random.random((1000, 784))

# these are integers between 0 and 9(Générer des valeurs entières de 0 à 9)
labels = np.random.randint(10, size=(1000, 1))
# we convert the labels to a binary matrix of size (1000, 10)(À utiliser dans les tâches de classification multi-classes 1-Convertir en vecteur chaud)
# for use with categorical_crossentropy
labels = to_categorical(labels, 10)

# train the model
#note that we are passing a list of Numpy arrays as training data
# since the model has 2 inputs(Prend deux entrées comme arguments)
model.fit([data_1, data_2], labels, nb_epoch=10, batch_size=32)

Examples Il existe quelques exemples d'implémentation. Consultez l'original Keras.

Recommended Posts

Premiers pas avec la traduction japonaise du modèle séquentiel Keras
Mise en route: 30 secondes de traduction en japonais Keras
Premiers pas avec Android!
1.1 Premiers pas avec Python
[Français] Premiers pas avec Rust pour les programmeurs Python
Premiers pas avec apache2
Premiers pas avec Python
Premiers pas avec Django 1
Introduction à l'optimisation
Premiers pas avec Numpy
Premiers pas avec Spark
Premiers pas avec Python
Premiers pas avec Pydantic
Premiers pas avec Jython
Premiers pas avec Django 2
Traduire Premiers pas avec TensorFlow
Introduction aux fonctions Python
Premiers pas avec Go Assembly
Premiers pas avec PKI avec Golang ―― 4
Premiers pas avec Python Django (1)
Premiers pas avec Python Django (4)
Premiers pas avec Python Django (3)
Introduction à Python Django (6)
Premiers pas avec Django avec PyCharm
Premiers pas avec Python Django (5)
Premiers pas avec Python responder v2
Introduction à Git (1) Stockage d'historique
Premiers pas avec Sphinx. Générer docstring avec Sphinx
Premiers pas avec les applications Web Python
Premiers pas avec Python pour les classes PHPer
Premiers pas avec Sparse Matrix avec scipy.sparse
Premiers pas avec Julia pour Pythonista
Premiers pas avec Python Bases de Python
Premiers pas avec Cisco Spark REST-API
Commençant par USD sur Windows
Premiers pas avec les algorithmes génétiques Python
Premiers pas avec Python 3.8 sous Windows
Premiers pas avec Python pour les fonctions PHPer
Premiers pas avec CPU Steal Time
Premiers pas avec python3 # 1 Apprenez les connaissances de base
Premiers pas avec Python Web Scraping Practice
Premiers pas avec Python pour PHPer-Super Basics
Premiers pas avec Python Web Scraping Practice
Premiers pas avec Dynamo de Python boto
Premiers pas avec Lisp pour Pythonista: Supplément
Premiers pas avec Heroku, déploiement de l'application Flask
Premiers pas avec TDD avec Cyber-dojo chez MobPro
Principes de base de MongoDB: Premiers pas avec CRUD avec JAVA
Premiers pas avec le dessin avec matplotlib: écrire des fonctions simples
Présentation du modèle DCGAN pour Cifar 10 avec keras
Django Getting Started Part 2 avec eclipse Plugin (PyDev)
Premiers pas avec AWS IoT facilement en Python
Premiers pas avec le module ast de Python (à l'aide de NodeVisitor)
Matériel à lire lors de la mise en route de Python
Paramètres pour démarrer avec MongoDB avec python