| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | #!/usr/bin/pythonfrom __future__ import print_functionfrom keras.models import Sequentialfrom keras.models import Modelfrom keras.layers import Inputfrom keras.layers import Densefrom keras.layers import LSTMfrom keras.layers import GRUfrom keras.layers import SimpleRNNfrom keras.layers import Dropoutfrom keras import lossesimport h5pyfrom keras import backend as Kimport numpy as npdef binary_crossentrop2(y_true, y_pred):    return K.mean(2*K.abs(y_true-0.5) * K.binary_crossentropy(y_pred, y_true), axis=-1)print('Build model...')#model = Sequential()#model.add(Dense(16, activation='tanh', input_shape=(None, 25)))#model.add(GRU(12, dropout=0.0, recurrent_dropout=0.0, activation='tanh', recurrent_activation='sigmoid', return_sequences=True))#model.add(Dense(2, activation='sigmoid'))main_input = Input(shape=(None, 25), name='main_input')x = Dense(16, activation='tanh')(main_input)x = GRU(12, dropout=0.1, recurrent_dropout=0.1, activation='tanh', recurrent_activation='sigmoid', return_sequences=True)(x)x = Dense(2, activation='sigmoid')(x)model = Model(inputs=main_input, outputs=x)batch_size = 64print('Loading data...')with h5py.File('features.h5', 'r') as hf:    all_data = hf['features'][:]print('done.')window_size = 1500nb_sequences = len(all_data)/window_sizeprint(nb_sequences, ' sequences')x_train = all_data[:nb_sequences*window_size, :-2]x_train = np.reshape(x_train, (nb_sequences, window_size, 25))y_train = np.copy(all_data[:nb_sequences*window_size, -2:])y_train = np.reshape(y_train, (nb_sequences, window_size, 2))all_data = 0;x_train = x_train.astype('float32')y_train = y_train.astype('float32')print(len(x_train), 'train sequences. x shape =', x_train.shape, 'y shape = ', y_train.shape)# try using different optimizers and different optimizer configsmodel.compile(loss=binary_crossentrop2,              optimizer='adam',              metrics=['binary_accuracy'])print('Train...')model.fit(x_train, y_train,          batch_size=batch_size,          epochs=200,          validation_data=(x_train, y_train))model.save("newweights.hdf5")
 |