tutorial - redes neuronales convolucionales python
Cómo usar keras para XOR (2)
Si aumento el número de épocas en tu código a 50000, a menudo converge a la respuesta correcta para mí, solo toma un poco de tiempo :)
Sin embargo, a menudo se atasca. Obtengo mejores propiedades de convergencia si cambio su función de pérdida a ''mean_squared_error'', que es una función más suave.
Obtengo una convergencia aún más rápida si uso los optimizadores Adam o RMSProp. Mi línea de compilación final, que funciona:
model.compile(loss=''mse'', optimizer=''adam'')
...
model.fit(train_data, label, nb_epoch = 10000,batch_size = 4,verbose = 1,shuffle=True,show_accuracy = True)
Quiero practicar keras por código a xor, pero el resultado no es correcto, el siguiente es mi código, gracias a todos por ayudarme.
from keras.models import Sequential
from keras.layers.core import Dense,Activation
from keras.optimizers import SGD
import numpy as np
model = Sequential()# two layers
model.add(Dense(input_dim=2,output_dim=4,init="glorot_uniform"))
model.add(Activation("sigmoid"))
model.add(Dense(input_dim=4,output_dim=1,init="glorot_uniform"))
model.add(Activation("sigmoid"))
sgd = SGD(l2=0.0,lr=0.05, decay=1e-6, momentum=0.11, nesterov=True)
model.compile(loss=''mean_absolute_error'', optimizer=sgd)
print "begin to train"
list1 = [1,1]
label1 = [0]
list2 = [1,0]
label2 = [1]
list3 = [0,0]
label3 = [0]
list4 = [0,1]
label4 = [1]
train_data = np.array((list1,list2,list3,list4)) #four samples for epoch = 1000
label = np.array((label1,label2,label3,label4))
model.fit(train_data,label,nb_epoch = 1000,batch_size = 4,verbose = 1,shuffle=True,show_accuracy = True)
list_test = [0,1]
test = np.array((list_test,list1))
classes = model.predict(test)
print classes
Salida
[[ 0.31851079] [ 0.34130159]] [[ 0.49635666] [0.51274764]]
Utilicé una única capa oculta con 4 nodos ocultos, y casi siempre converge a la respuesta correcta dentro de las 500 épocas. Usé activaciones sigmoideas.