Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. WINDOW = 30
  2. n_channels = 5
  3. n_classes = 2
  4. batch_size = 100 # Batch size
  5. learning_rate = 0.0001
  6. epochs = 10000
  7.  
  8. graph = tf.Graph()
  9.  
  10. # Construct placeholders
  11. with graph.as_default():
  12. inputs_ = tf.placeholder(tf.float32, [None, WINDOW, n_channels], name = 'inputs')
  13. labels_ = tf.placeholder(tf.float32, [None, n_classes], name = 'labels')
  14. keep_prob_ = tf.placeholder(tf.float32, name = 'keep')
  15. learning_rate_ = tf.placeholder(tf.float32, name = 'learning_rate')
  16.  
  17. with graph.as_default():
  18. # Layer-1
  19. conv = tf.layers.conv1d(inputs=inputs_, filters=32, kernel_size=3, strides=1, padding='valid', activation=tf.nn.relu)
  20. conv = tf.layers.batch_normalization(conv)
  21.  
  22. # Layer-2
  23. conv = tf.layers.conv1d(inputs=conv, filters=64, kernel_size=3, strides=1, padding='valid')
  24. conv = tf.nn.leaky_relu(conv, alpha=0.01)
  25. conv = tf.layers.batch_normalization(conv)
  26.  
  27. # Layer-3
  28. conv = tf.layers.conv1d(inputs=conv, filters=128, kernel_size=3, strides=1, padding='valid')
  29. conv = tf.nn.leaky_relu(conv, alpha=0.01)
  30. conv = tf.layers.batch_normalization(conv)
  31.  
  32.  
  33. # Layer-4
  34. conv = tf.layers.conv1d(inputs=conv, filters=256, kernel_size=3, strides=1, padding='valid')
  35. conv = tf.nn.leaky_relu(conv, alpha=0.01)
  36. conv = tf.layers.batch_normalization(conv)
  37.  
  38.  
  39. # Layer-5
  40. conv = tf.layers.conv1d(inputs=conv, filters=256, kernel_size=3, strides=1, padding='valid')
  41. conv = tf.nn.leaky_relu(conv, alpha=0.01)
  42. conv = tf.layers.batch_normalization(conv)
  43.  
  44.  
  45. # Layer-6
  46. conv = tf.layers.conv1d(inputs=conv, filters=256, kernel_size=3, strides=1, padding='valid')
  47. conv = tf.nn.leaky_relu(conv, alpha=0.01)
  48. conv = tf.layers.batch_normalization(conv)
  49.  
  50. with graph.as_default():
  51. # Flatten and add dropout
  52.  
  53. flat = tf.layers.flatten(conv)
  54. flat = tf.nn.dropout(flat, keep_prob=keep_prob_)
  55. dense = tf.layers.dense(inputs=flat, units=256)
  56. dense = tf.nn.dropout(dense, rate=1-keep_prob_)
  57. dense = tf.layers.dense(inputs=dense, units=256)
  58. dense = tf.nn.dropout(dense, rate=1-keep_prob_)
  59.  
  60. # Predictions
  61. logits = tf.layers.dense(flat, n_classes)
  62.  
  63. # Cost function and optimizer
  64. cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=labels_))
  65. optimizer = tf.train.AdamOptimizer(learning_rate_).minimize(cost)
  66.  
  67. # Accuracy
  68. correct_pred = tf.equal(tf.argmax(logits, 1), tf.argmax(labels_, 1))
  69. accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32), name='accuracy')
  70.  
  71. validation_acc = []
  72. validation_loss = []
  73.  
  74. train_acc = []
  75. train_loss = []
  76.  
  77. with graph.as_default():
  78. saver = tf.train.Saver()
  79.  
  80. with tf.Session(graph=graph) as sess:
  81. sess.run(tf.global_variables_initializer())
  82. iteration = 1
  83.  
  84. for e in range(epochs):
  85.  
  86. # Loop over batches
  87. for x,y in get_batches(X_tr, y_tr, batch_size):
  88. # Feed dictionary
  89. feed = {inputs_ : x, labels_ : y, keep_prob_ : 0.2, learning_rate_ : learning_rate}
  90.  
  91. # Loss
  92. loss, _ , acc = sess.run([cost, optimizer, accuracy], feed_dict = feed)
  93. train_acc.append(acc)
  94. train_loss.append(loss)
  95.  
  96. # Print at each 5 iters
  97. if (iteration % 50 == 0):
  98. print("Epoch: {}/{}".format(e, epochs),
  99. "Iteration: {:d}".format(iteration),
  100. "Train loss: {:6f}".format(loss),
  101. "Train acc: {:.6f}".format(acc))
  102.  
  103. # Compute validation loss at every 10 iterations
  104. if (iteration%100 == 0):
  105. val_acc_ = []
  106. val_loss_ = []
  107.  
  108. for x_v, y_v in get_batches(X_vld, y_vld, batch_size):
  109. # Feed
  110. feed = {inputs_ : x_v, labels_ : y_v, keep_prob_ : 1.0}
  111.  
  112. # Loss
  113. loss_v, acc_v = sess.run([cost, accuracy], feed_dict = feed)
  114. val_acc_.append(acc_v)
  115. val_loss_.append(loss_v)
  116. # Print info
  117. print("Epoch: {}/{}".format(e, epochs),
  118. "Iteration: {:d}".format(iteration),
  119. "Validation loss: {:6f}".format(np.mean(val_loss_)),
  120. "Validation acc: {:.6f}".format(np.mean(val_acc_)))
  121.  
  122. # Store
  123. validation_acc.append(np.mean(val_acc_))
  124. validation_loss.append(np.mean(val_loss_))
  125.  
  126. # Iterate
  127. iteration += 1
  128.  
  129. saver.save(sess,"/checkpoints-cnn/har.ckpt")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement