I wanted to check if my understanding of the BiRNN output is correct.
Following is the code.
print('\nOutput:\n', out)
print("\nForward Outputs: \n", out[:, :, :HIDDEN_SIZE])
print("\nBackward Outpus: \n", out[:, :, HIDDEN_SIZE:])
print('\nHidden:\n', hidden)
print("\nForward Hidden: \n", hidden[:, :, 0])
print("\nBackward Hidden: \n", hidden[:, :, 1])
Following is the output.
Output:
tensor([[[ 0.0908, 0.5328, 0.6399, -0.4098],
[ 0.4033, 0.8654, 0.3567, -0.6038],
[ 0.6768, 0.9732, 0.0298, -0.7668],
[ 0.8282, 0.9944, -0.2225, -0.8903],
[ 0.9032, 0.9986, -0.3265, -0.9737]],
[[ 0.8729, 0.9987, -0.7337, -0.9683],
[ 0.9645, 0.9999, -0.8254, -0.9868],
[ 0.9797, 1.0000, -0.8842, -0.9947],
[ 0.9878, 1.0000, -0.9168, -0.9981],
[ 0.9926, 1.0000, -0.8730, -0.9998]],
[[ 0.9890, 1.0000, -0.9665, -0.9997],
[ 0.9973, 1.0000, -0.9777, -0.9999],
[ 0.9984, 1.0000, -0.9851, -1.0000],
[ 0.9990, 1.0000, -0.9899, -1.0000],
[ 0.9994, 1.0000, -0.9820, -1.0000]],
[[ 0.9991, 1.0000, -0.9956, -1.0000],
[ 0.9998, 1.0000, -0.9970, -1.0000],
[ 0.9999, 1.0000, -0.9980, -1.0000],
[ 0.9999, 1.0000, -0.9987, -1.0000],
[ 1.0000, 1.0000, -0.9976, -1.0000]]], grad_fn=<TransposeBackward1>)
Forward Outputs:
tensor([[[0.0908, 0.5328],
[0.4033, 0.8654],
[0.6768, 0.9732],
[0.8282, 0.9944],
[0.9032, 0.9986]],
[[0.8729, 0.9987],
[0.9645, 0.9999],
[0.9797, 1.0000],
[0.9878, 1.0000],
[0.9926, 1.0000]],
[[0.9890, 1.0000],
[0.9973, 1.0000],
[0.9984, 1.0000],
[0.9990, 1.0000],
[0.9994, 1.0000]],
[[0.9991, 1.0000],
[0.9998, 1.0000],
[0.9999, 1.0000],
[0.9999, 1.0000],
[1.0000, 1.0000]]], grad_fn=<SliceBackward>)
Backward Outpus:
tensor([[[ 0.6399, -0.4098],
[ 0.3567, -0.6038],
[ 0.0298, -0.7668],
[-0.2225, -0.8903],
[-0.3265, -0.9737]],
[[-0.7337, -0.9683],
[-0.8254, -0.9868],
[-0.8842, -0.9947],
[-0.9168, -0.9981],
[-0.8730, -0.9998]],
[[-0.9665, -0.9997],
[-0.9777, -0.9999],
[-0.9851, -1.0000],
[-0.9899, -1.0000],
[-0.9820, -1.0000]],
[[-0.9956, -1.0000],
[-0.9970, -1.0000],
[-0.9980, -1.0000],
[-0.9987, -1.0000],
[-0.9976, -1.0000]]], grad_fn=<SliceBackward>)
Hidden:
tensor([[[ 0.9032, 0.9986],
[ 0.9926, 1.0000],
[ 0.9994, 1.0000],
[ 1.0000, 1.0000]],
[[ 0.6399, -0.4098],
[-0.7337, -0.9683],
[-0.9665, -0.9997],
[-0.9956, -1.0000]]], grad_fn=<StackBackward>)
Forward Hidden:
tensor([[ 0.9032, 0.9926, 0.9994, 1.0000],
[ 0.6399, -0.7337, -0.9665, -0.9956]], grad_fn=<SelectBackward>)
Backward Hidden:
tensor([[ 0.9986, 1.0000, 1.0000, 1.0000],
[-0.4098, -0.9683, -0.9997, -1.0000]], grad_fn=<SelectBackward>)
Is my understanding of the BiRNN correct?