Home | History | Annotate | Download | only in scripts
      1 #!/usr/bin/python
      2 
      3 from __future__ import print_function
      4 
      5 from keras.models import Sequential
      6 from keras.models import Model
      7 from keras.layers import Input
      8 from keras.layers import Dense
      9 from keras.layers import LSTM
     10 from keras.layers import GRU
     11 from keras.layers import SimpleRNN
     12 from keras.layers import Dropout
     13 from keras import losses
     14 import h5py
     15 
     16 from keras import backend as K
     17 import numpy as np
     18 
     19 def binary_crossentrop2(y_true, y_pred):
     20     return K.mean(2*K.abs(y_true-0.5) * K.binary_crossentropy(y_pred, y_true), axis=-1)
     21 
     22 print('Build model...')
     23 #model = Sequential()
     24 #model.add(Dense(16, activation='tanh', input_shape=(None, 25)))
     25 #model.add(GRU(12, dropout=0.0, recurrent_dropout=0.0, activation='tanh', recurrent_activation='sigmoid', return_sequences=True))
     26 #model.add(Dense(2, activation='sigmoid'))
     27 
     28 main_input = Input(shape=(None, 25), name='main_input')
     29 x = Dense(16, activation='tanh')(main_input)
     30 x = GRU(12, dropout=0.1, recurrent_dropout=0.1, activation='tanh', recurrent_activation='sigmoid', return_sequences=True)(x)
     31 x = Dense(2, activation='sigmoid')(x)
     32 model = Model(inputs=main_input, outputs=x)
     33 
     34 batch_size = 64
     35 
     36 print('Loading data...')
     37 with h5py.File('features.h5', 'r') as hf:
     38     all_data = hf['features'][:]
     39 print('done.')
     40 
     41 window_size = 1500
     42 
     43 nb_sequences = len(all_data)/window_size
     44 print(nb_sequences, ' sequences')
     45 x_train = all_data[:nb_sequences*window_size, :-2]
     46 x_train = np.reshape(x_train, (nb_sequences, window_size, 25))
     47 
     48 y_train = np.copy(all_data[:nb_sequences*window_size, -2:])
     49 y_train = np.reshape(y_train, (nb_sequences, window_size, 2))
     50 
     51 all_data = 0;
     52 x_train = x_train.astype('float32')
     53 y_train = y_train.astype('float32')
     54 
     55 print(len(x_train), 'train sequences. x shape =', x_train.shape, 'y shape = ', y_train.shape)
     56 
     57 # try using different optimizers and different optimizer configs
     58 model.compile(loss=binary_crossentrop2,
     59               optimizer='adam',
     60               metrics=['binary_accuracy'])
     61 
     62 print('Train...')
     63 model.fit(x_train, y_train,
     64           batch_size=batch_size,
     65           epochs=200,
     66           validation_data=(x_train, y_train))
     67 model.save("newweights.hdf5")
     68