message: attention score shape
  from equation 4, the attention score should not be a rank-3 tensor object.
diff: "And the pseudo-code:\n",
  "\n",
  "* `score = FC(tanh(FC(EO) + FC(H)))`\n",
  - "* `attention weights = softmax(score, axis = 1)`. Softmax by default is applied on the last axis but here we want to apply it on the *1st axis*, since the shape of score is *(batch_size, max_length, hidden_size)*. `Max_length` is the length of our input. Since we are trying to assign a weight to each input, softmax should be applied on that axis.\n",
  + "* `attention weights = softmax(score, axis = 1)`. Softmax by default is applied on the last axis but here we want to apply it on the *1st axis*, since the shape of score is *(batch_size, max_length, 1)*. `Max_length` is the length of our input. Since we are trying to assign a weight to each input, softmax should be applied on that axis.\n",
  "* `context vector = sum(attention weights * EO, axis = 1)`. Same reason as above for choosing axis as 1.\n",
  "* `embedding output` = The input to the decoder X is passed through an embedding layer.\n",
  "* `merged vector = concat(embedding output, context vector)`\n",
  