Acabo de instalar tensorflow y keras. Y tengo la demostración simple de la siguiente manera:
from keras.models import Sequential from keras.layers import Dense import numpy # fix random seed for reproducibility seed = 7 numpy.random.seed(seed) # load pima indians dataset dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") # split into input (X) and output (Y) variables X = dataset[:,0:8] Y = dataset[:,8] # create model model = Sequential() model.add(Dense(12, input_dim=8, init='uniform', activation='relu')) model.add(Dense(8, init='uniform', activation='relu')) model.add(Dense(1, init='uniform', activation='sigmoid')) # Compile model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model model.fit(X, Y, nb_epoch=10, batch_size=10) # evaluate the model scores = model.evaluate(X, Y) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))Y tengo esta advertencia:
/usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py:86: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(12, activation="relu", kernel_initializer="uniform", input_dim=8)` '` call to the Keras 2 API: ' + signature) /usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py:86: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(8, activation="relu", kernel_initializer="uniform")` '` call to the Keras 2 API: ' + signature) /usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py:86: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(1, activation="sigmoid", kernel_initializer="uniform")` '` call to the Keras 2 API: ' + signature) /usr/local/lib/python2.7/dist-packages/keras/models.py:826: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`. warnings.warn('The `nb_epoch` argument in `fit` 'Entonces, ¿cómo puedo manejar esto?
Como dice Matías en los comentarios, esto es bastante sencillo... Keras actualizó su API ayer a la versión 2.0. Obviamente, ha descargado esa versión y la demostración aún usa la API "antigua". Han creado advertencias para que la API "antigua" siga funcionando en la versión 2.0, pero dicen que cambiará, así que use la API 2.0 de ahora en adelante.
La forma de adaptar su código a API 2.0 es cambiar el parámetro "init" a "kernel_initializer" para todas las capas Dense() , así como "nb_epoch" a "epochs" en la función fit() .
from keras.models import Sequential from keras.layers import Dense import numpy # fix random seed for reproducibility seed = 7 numpy.random.seed(seed) # load pima indians dataset dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") # split into input (X) and output (Y) variables X = dataset[:,0:8] Y = dataset[:,8] # create model model = Sequential() model.add(Dense(12, input_dim=8, kernel_initializer ='uniform', activation='relu')) model.add(Dense(8, kernel_initializer ='uniform', activation='relu')) model.add(Dense(1, kernel_initializer ='uniform', activation='sigmoid')) # Compile model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model model.fit(X, Y, epochs=10, batch_size=10) # evaluate the model scores = model.evaluate(X, Y) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))Esto no debería arrojar ninguna advertencia, es la versión keras 2.0 del código.
En su propio caso, el problema era que estaba utilizando un nombre de parámetro de la versión anterior de la API. Para deshacerse de esta advertencia, en el método compile() , en lugar de usar nb_epochs , debe usar epochs . Ahora, el mensaje de advertencia debería desaparecer. El mensaje de advertencia describe el problema literalmente.
La nueva API de Keras a menudo le preguntará sobre eso automáticamente, ya que están introduciendo más y más cambios con cada nueva actualización. Sin embargo, esta advertencia no tiene efecto alguno sobre el rendimiento del modelo.
en lugar de usar init , use kernel_initializer y debería estar bien.