Guest User

Untitled

a guest
Oct 16th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. import tensorflow as tf
  2. tf.reset_default_graph()
  3.  
  4. onehot_encoding_articles = tf.one_hot(int_article, len(set(articleIds)))
  5.  
  6. n_articles = len(set(articleIds))
  7. seqLENGTH = tf.placeholder(tf.int32, [RNN_batch_size])
  8.  
  9. inputX = tf.placeholder(tf.int32, [RNN_batch_size, None])
  10. inputs = tf.nn.embedding_lookup(embeddings, inputX)
  11. inputY = tf.placeholder(tf.int32, [RNN_batch_size])
  12. labels = tf.nn.embedding_lookup(onehot_encoding_articles, inputY)
  13.  
  14.  
  15. rnn_layers = [tf.nn.rnn_cell.LSTMCell(size) for size in [128, 256]]
  16.  
  17. multi_rnn_cell = tf.nn.rnn_cell.MultiRNNCell(rnn_layers)
  18.  
  19. init_state = multi_rnn_cell.zero_state(RNN_batch_size, tf.float64)
  20.  
  21. outputs, state = tf.nn.dynamic_rnn(cell=multi_rnn_cell,
  22. inputs=inputs,
  23. initial_state=init_state,
  24. sequence_length=seqLENGTH,
  25. dtype=tf.float64)
  26.  
  27. dense_layer = tf.layers.dense(state[1].h,32)
  28.  
  29. logits = tf.layers.dense(dense_layer,n_articles)
  30.  
  31. cross_entropy = tf.nn.softmax_cross_entropy_with_logits_v2(labels=labels,logits=logits)
  32. loss = tf.reduce_mean(cross_entropy)
  33. optimizer = tf.train.AdamOptimizer().minimize(loss)
  34.  
  35. init = tf.global_variables_initializer()
  36.  
  37. with tf.Session() as sess:
  38. sess.run(init)
  39. for epoch in range(1,5):
  40. batches = utils.get_batches_rnn(RNN_batch_size,int_wordsPerInteractionInput[:1000],int_article[:1000], len(embeddings)-1)
  41. for x, y, size in batches:
  42. feed = {inputX: x,
  43. inputY: y,
  44. seqLENGTH: size}
  45. train_loss, _ = sess.run([loss, optimizer], feed_dict=feed)
  46. print("Avg. Training loss: {:.4f}".format(train_loss))
  47.  
  48. def get_batches_rnn(n_sentences_in_batch, sentences, articleIds, pad_index):
  49.  
  50. for idx in range(0, len(sentences), n_sentences_in_batch):
  51. x, y, batch_size = [], [], []
  52. x_batch = sentences[idx:idx+n_sentences_in_batch]
  53. y_batch = articleIds[idx:idx+n_sentences_in_batch]
  54. max_batch = max(len(x) for x in x_batch)
  55. for batchIndex in range(len(x_batch)):
  56. padding = [word for word in x_batch[batchIndex]]
  57. padSize = max_batch - len(x_batch[batchIndex])
  58. padding.extend(np.full((padSize), pad_index, dtype=int))
  59. x.append(padding)
  60. y.append(y_batch[batchIndex])
  61. batch_size.append(len(x_batch[batchIndex]))
  62. yield np.asarray(x), np.asarray(y), np.asarray(batch_size)
  63.  
  64. batches = utils.get_batches_rnn(3,int_wordsPerInteractionInput,int_article,len(embeddings)-1)
  65. x, y, size = next(batches)
  66. print(x)
  67. print(y)
  68. print(size)
  69.  
  70. Output:
  71.  
  72. [[ 20 0 23342]
  73. [ 122 8 23342]
  74. [ 257 243 82]]
  75. [452 468 521]
  76. [2 2 3]
Add Comment
Please, Sign In to add comment