Model is not able to predict <pad> tokens, ended up throwing garbage tokens

Gaurav_Sharma: <p>Hi there,<br>
I am working on an Image2Seq model. I have prepared my dataset in a way that gives: (Image tensors, padded seq) for a batch size of 128 i.e. shape of target: (seq_len, 128).  While training, my training loss reduces perfectly but the validation doesn’t go down after a point. Initially, I thought it was an overfitting problem, but on analyzing the output, I got to know that the  tokens weren’t predicted properly, and instead ended up throwing garbage tokens(as shown in the example). If I remove garbage tokens, I am able to get a pretty decent Bleu score. May I request you to guide me on how should I proceed?</p>
<p>Thank you!</p>
<p>source:</p>
<pre><code class="lang-auto">&lt;sos&gt; \rho ( x _ { 0 } ) = S p \int \frac { d ^ { \nu } p } { ( 2 \pi ) ^ { \nu } } \frac { 1 } { \gamma ^ { \mu } p _ { \mu } + M ( \hat { x } + x _ { 0 } ) } &lt;eos&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt; &lt;pad&gt;
</code></pre>
<p>target:</p>
<pre><code class="lang-auto">&lt;sos&gt; \rho ( x _ { 0 } ) = S p \int \frac { d ^ { \prime } p } { ( 2 \pi ) ^ { \nu } } \frac { 1 } { \gamma ^ { \nu } p _ { \mu } + M ( q + x _ { 0 } ) } &lt;eos&gt; &lt;eos&gt; &lt;eos&gt; &lt;eos&gt; &lt;eos&gt; &lt;eos&gt; &lt;eos&gt; } &lt;eos&gt; &lt;eos&gt; } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } &lt;eos&gt; &lt;eos&gt; } } } &lt;eos&gt; &lt;eos&gt; } } } &lt;eos&gt; &lt;eos&gt; } } } &lt;eos&gt; &lt;eos&gt; } } } &lt;eos&gt; { 2 } } { { } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } } } { 2 } }
</code></pre>

blackbirdbarber: <aside class="quote no-group" data-username="Gaurav_Sharma" data-post="1" data-topic="158864">
<div class="title">
<div class="quote-controls"></div>
<img loading="lazy" alt="" width="24" height="24" src="https://discuss.pytorch.org/user_avatar/discuss.pytorch.org/gaurav_sharma/48/46330_2.png" class="avatar"> Gaurav_Sharma:</div>
<blockquote>
<p>Image2Seq model.</p>
</blockquote>
</aside>
<p>Hi G,</p>
<p>What Image2Seq do you use?</p>

Gaurav_Sharma: <p>Hi <a class="mention" href="/u/blackbirdbarber">@blackbirdbarber</a>,<br>
I am using CNN(6 layers) as the encoder and LSTM as the decoder (a very simple version of OpenNMT kind of).</p>