Je suis nouveau à keras et j'ai expérimenté diverses choses telles que BatchNormalization, mais cela ne fonctionne pas du tout. Lorsque la ligne BatchNormalization est commentée, elle converge vers une perte d'environ 0,04 ou mieux, mais avec la ligne telle quelle, elle converge vers 0,71 et reste bloquée à ce niveau.
from sklearn import preprocessing
from sklearn.datasets import load_boston
from keras.models import Model
from keras.layers import Input, Dense
from keras.layers.normalization import BatchNormalization
import keras.optimizers
boston = load_boston()
x = boston.data
y = boston.target
normx = preprocessing.scale(x)
normy = preprocessing.scale(y)
# doesnt construct output layer
def layer_looper(inputs, number_of_loops, neurons):
inputs_copy = inputs
for i in range(number_of_loops):
inputs_copy = Dense(neurons, activation='relu')(inputs_copy)
inputs_copy = BatchNormalization()(inputs_copy)
return inputs_copy
inputs = Input(shape = (13,))
x = layer_looper(inputs, 40, 20)
predictions = Dense(1, activation='linear')(x)
model = Model(inputs=inputs, outputs=predictions)
opti = keras.optimizers.Adam(lr=0.0001)
model.compile(loss='mean_absolute_error', optimizer=opti, metrics=['acc'])
print(model.summary())
model.fit(normx, normy, epochs=5000, verbose=2, batch_size=128)
J'ai essayé d'expérimenter avec la taille des lots et l'optimiseur mais cela ne semble pas très efficace. Est-ce que je fais quelque chose de mal ?