Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. import numpy as np
  2. import tensorflow as tf
  3. from keras.preprocessing.sequence import pad_sequences
  4.  
  5. from grammar import *
  6.  
  7.  
  8. def generate_data(num_samples):
  9. x_data = []
  10. y_data = []
  11. data_len = []
  12. for i in range(num_samples):
  13. er_grammar = embedded_reber_generate()
  14. er_target = embedded_reber_get_targets(er_grammar)
  15.  
  16. x_data.append(str_to_num(er_grammar))
  17. y_data.append(get_network_targets(er_target))
  18. data_len.append(len(er_grammar))
  19.  
  20. return np.array(x_data), np.array(y_data), np.array(data_len)
  21.  
  22.  
  23. if __name__ == '__main__':
  24. # Task 1: Generate 5000 training samples, 500 validation and 500 test samples from the embedded Reber grammar
  25. x_train, y_train, train_len = generate_data(num_samples=5000)
  26. x_val, y_val, val_len = generate_data(num_samples=500)
  27. x_test, y_test, test_len = generate_data(num_samples=500)
  28.  
  29. # Add padding
  30. pad_len = max(np.max(train_len), np.max(val_len), np.max(test_len))
  31.  
  32. x_train = pad_sequences(x_train, maxlen=pad_len, padding='post')
  33. y_train = pad_sequences(y_train, maxlen=pad_len, padding='post')
  34.  
  35. x_val = pad_sequences(x_val, maxlen=pad_len, padding='post')
  36. y_val = pad_sequences(y_val, maxlen=pad_len, padding='post')
  37.  
  38. x_test = pad_sequences(x_test, maxlen=pad_len, padding='post')
  39. y_test = pad_sequences(y_test, maxlen=pad_len, padding='post')
  40.  
  41. # ============================================================================================
  42. # TRAIN THE NETWORK
  43. # ============================================================================================
  44. tf.keras.backend.clear_session()
  45.  
  46. # parameters
  47. neurons = 128
  48. batch_size = 32
  49. learning_rate = 0.001
  50.  
  51. model = tf.keras.Sequential()
  52. # Add an Embedding layer expecting output of 7 units
  53. model.add(tf.keras.layers.Embedding(input_dim=8, output_dim=7, input_length=len(x_train[0]), mask_zero=True))
  54. model.add(tf.keras.layers.LSTM(units=neurons, activation='relu', return_sequences=True))
  55. model.add(tf.keras.layers.Dense(7, activation='sigmoid'))
  56.  
  57. model.summary()
  58.  
  59. model.compile(loss='binary_crossentropy',
  60. optimizer=tf.keras.optimizers.Adam(learning_rate),
  61. metrics=['accuracy'])
  62.  
  63. hist = model.fit(x_train, y_train, validation_data=(x_val, y_val), batch_size=batch_size, epochs=10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement