采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好, 在 train_step 中的计算loss步骤,也就是下面这一步 loss += loss_funtion(targ[:, t+1],predictions)
prediction的shape 是 [batch_size,vocab_size] 而targ[:,t+1]的shape是[batch_size,time_step] 这两者之间shape不一样,不需要加全连接层就可以计算的嘛, 还是我理解有误,望得到老师指导,谢谢
同学你好,你说的应该是这块代码:
optimizer = keras.optimizers.Adam() loss_object = keras.losses.SparseCategoricalCrossentropy( from_logits=True, reduction='none') def loss_function(real, pred): mask = tf.math.logical_not(tf.math.equal(real, 0)) loss_ = loss_object(real, pred) mask = tf.cast(mask, dtype=loss_.dtype) loss_ *= mask return tf.reduce_mean(loss_)
这里的损失计算,我们使用的是SparseCategoricalCrossentropy。这个函数接收概率分布和真实类别作为输入计算loss。https://www.tensorflow.org/api_docs/python/tf/keras/losses/SparseCategoricalCrossentropy
然后prediction的shape确实是 [batch_size,vocab_size],不过targ[:, t+1]的shape是[batch_size, ], 因为第二维我们只取了一个值而不是一个区间。
登录后可查看更多问答,登录/注册
Tensorflow2.0实战—以实战促理论的方式学习深度学习
3.2k 1
1.8k 3
1.7k 19
1.8k 13
2.6k 7
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号