Je reçois l'erreur suivante lorsque j'essaie d'utiliser un jeu de données HDF5 avec keras. Il semblerait que Sequential.fit(), en faisant une tranche de données de validation, rencontre qu'une clé de la tranche n'a pas l'attribut 'stop'. Je ne sais pas s'il s'agit d'un problème de formatage de mon jeu de données HDF5 ou d'autre chose. Toute aide serait appréciée.Erreur lors de la tentative d'utilisation d'un jeu de données HDF5 avec Keras
Traceback (most recent call last):
File "autoencoder.py", line 73, in modulevalidation_split=0.2)
File "/home/ben/.local/lib/python2.7/site-packages/keras/models.py", line 672, in fit
initial_epoch=initial_epoch)
File "/home/ben/.local/lib/python2.7/site-packages/keras/engine/training.py", line 1143, in fit
x, val_x = (slice_X(x, 0, split_at), slice_X(x, split_at))
File "/home/ben/.local/lib/python2.7/site-packages/keras/engine/training.py", line 301, in slice_X
return [x[start:stop] for x in X]
File "/home/ben/.local/lib/python2.7/site-packages/keras/utils/io_utils.py", line 71, in getitem
if key.stop + self.start <= self.end:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
training_input = HDF5Matrix("../../media/patches/data_rotated.h5", 'training_input_rotated')
training_target = HDF5Matrix("../../media/patches/data_rotated.h5", 'training_target_rotated')
# Model definition
autoencoder = Sequential()
autoencoder.add(Convolution2D(32, 3, 3, activation='relu', border_mode='same',input_shape=(64, 64, 3)))
autoencoder.add(MaxPooling2D((2, 2), border_mode='same'))
autoencoder.add(Convolution2D(64, 3, 3, activation='relu', border_mode='same'))
autoencoder.add(MaxPooling2D((2, 2), border_mode='same'))
autoencoder.add(Convolution2D(128, 3, 3, activation='relu', border_mode='same'))
autoencoder.add(Deconvolution2D(64, 3, 3, activation='relu', border_mode='same',output_shape=(None, 16, 16, 64),subsample=(2, 2)))
autoencoder.add(UpSampling2D((2, 2)))
autoencoder.add(Deconvolution2D(32, 3, 3, activation='relu', border_mode='same',output_shape=(None, 32, 32, 32),subsample=(2, 2)))
autoencoder.add(UpSampling2D((2, 2)))
autoencoder.add(Deconvolution2D(3, 3, 3, activation='sigmoid', border_mode='same',output_shape=(None, 64, 64, 3),subsample=(2, 2)))
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
autoencoder.summary()
# Callback configure
csv_logger = CSVLogger('../../runs/training_' + start_time + '.log')
prog_logger = ProgbarLogger()
checkpointer = ModelCheckpoint(filepath='../../runs/model_' + start_time + '.hdf5', verbose=1, save_best_only=False)
# Training call
history = autoencoder.fit(
x=training_input,
y=training_target,
batch_size=256,
nb_epoch=1000,
verbose=2,
callbacks=[csv_logger, prog_logger, checkpointer],
validation_split=0.2)
Essayez + str (start_time) –
Je suis désolé, je ne comprends pas. Où devrais-je ajouter cela? – Ben
Dans la définition de l'enregistreur Csv. –