Red de conocimiento informático - Problemas con los teléfonos móviles - Construir CNN con keras de Python

Construir CNN con keras de Python

data.py: #coding: utf-8

"""

Autor: wepon

Fuente: código n.py Ajuste de la siguiente manera: #coding: utf-8

'''

GPU?run? Comando:

THEANO_FLAGS=mode=FAST_RUN, dispositivo=gpu, floatX =float32?python?cnn.py

CPU?Comando:

python?cnn.py

'''

# Importar varios componentes del módulo utilizados

desde?__future__?import?absolute_import

desde?__future__?import?print_function

desde?keras.preprocessing.image?import ? ImageDataGenerator

de?keras.models?import?Sequential

de?keras.layer.core?import?Denso, Abandono, Activación, Aplanado

de ? keras.layer.advanced_activations?import?PReLU

de?keras.layer.convolutional?import?Convolution2D,?MaxPooling2D

de?keras.optimizers?import?SGD, Adadelta, Adagrad

de?keras.utils?import?np_ utils, generic_utils

de?six.moves?import?range

de?data?import?load_data

importar?aleatorio

#load_data

datos ,?label?=?load_data()

#disrupt datos

index?=?[i? para?matrix, llame directamente a esta función proporcionada por keras después de la conversión

label?=?np_utils.to_categorical(label,?10)

# ##############

# Comience a construir el modelo CNN

###############< / p>

#Generar modelo

modelo?=?Sequential()

#La primera capa convolucional. 4 núcleos de convolución, cada tamaño de núcleo de convolución es 5 * 5. 1 representa el canal de la imagen de entrada y la imagen en escala de grises es 1 canal.

#border_mode puede ser válido o completo; consulte aquí para obtener más detalles: La pérdida de parámetros en el montón es la función de pérdida (función objetivo)

SGD?=?SGD(l2=0.0 , lr =0.05,?decent=1e-6,?momentum=0.9,?nesterov=True)

model.compile(loss='categorical_crossentropy',?optimizer=sgd, class_mode="categorical")

p>

# Llamar al método de adaptación es un proceso de entrenamiento. El número de épocas de entrenamiento se establece en 10 y el tamaño del lote es 100.

#Los datos se mezclan aleatoriamente shuffle=True. detallado = 1, el resultado del proceso de entrenamiento, 0, 1 y 2 se pueden usar de cualquier manera, no importa. show_accuracy=True, el resultado del proceso de entrenamiento para cada época es la precisión.

#Llame al método de adaptación, que es un proceso de entrenamiento.

#validation_split=0.2, utilice 20 datos como conjunto de validación.

model.fit(data,?label,?batch_size=100,?nb_epoch=10,shuffle=True,verbose=1,show_accuracy=True,validation_split=0.2)

" """

#Métodos para usar data?augmentation

#Algunos parámetros y métodos para llamar, ver documentación

datagen?=?ImageDataGenerator(

featurewise_center=True,?#establece la media de entrada en 0 sobre el conjunto de datos

samplewise_center=False,?#establece la media de cada muestra en 0

featurewise_std_normalization=True,?# ?divide?inputs?by?std?of?dataaset

samplewise_std_normalization=False,?#?divide?each?inputs?by?its?std?

zca_whitening=False,? #Aplicar blanqueamiento ZCA

rotation_range=20,?#Girar aleatoriamente la imagen de 0 a 180 grados

width_shift_range=0.2,?#Desplazar aleatoriamente la imagen horizontalmente (una fracción del total width )

height_shift_range=0.2,?#Mueve aleatoriamente la imagen verticalmente (parte de la altura total)

horizontal_flip=True,?#Voltea aleatoriamente la imagen

vertical_flip=Falso)? #Voltear imágenes aleatoriamente

#?Calcular la cantidad necesaria para la normalización de características

#?(componentes estándar, medio y principal si se aplica el blanqueamiento ZCA)

datagen.fit(datos)

for?e?in?range(nb_epoch):

print('-'*40)

print( 'Época ',?e)

print('-'*40)

print("Entrenamiento...")

#?=?generic_utils .Progbar (data.shape[0])

para?X_batch,?Y_ lote?in?datagen.flow(data,?label):

pérdida, precisión?=? train(X_batch,?Y_batch,accuracy=True)

progbar.add(X_batch.shape[0],?values=[("train?loss",?loss),("accuracy: ", ?precisión)]?)

progbar?

""""