请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

metric & loss

老师,请教您如下问题:
从上到下分别是图1和图2.
1.您在3-12中先讲解了metric的用法如图1所示:当不对Metric进行reset的话,结果是分别累加metric中2个变量的差值的平方,然后再求取均值,得到了最后的累计结果。这不就是均方差么
2.图2中得到的x_batch,y_batch都是列表么?假设batchsize=32,x_batch列表有32个训练样本?红框框起来的metric在计算时,是分别将y_batch列表中的元素和y_pred列表中的元素分别对应做差,然后求取平方,得到一个列表。在第二层for循环上一个step中上一个batch中计算出的这个metric列表结果,还会在下一个step中进行累加,然后除以step的次数求平均么?如果求平均的话那么一个epoch循环迭代完,最后的metric,是steps_per_eopch个batch最后的平均么,
3.计算每一个batch/step的loss数据的意义,每一个batch都是被N个样本打乱之后平均分出来一批批的么?还是每次取batch都把N个样本打乱呢?如果是打乱之后平均32个分出来的bacth,那么每一次迭代计算Loss的时候针对的32个样本是不同的,下一次32个样本同上一次不同,就算loss减小了,又不是同一批32个样本计算的,loss下降了,真的总体Loss就下降了么。图2中也没有算整体样本的平均loss呀,只是算的每一个step的Loss,到底有什么意义呢

图片描述图片描述

正在回答

1回答

1.您在3-12中先讲解了metric的用法如图1所示:当不对Metric进行reset的话,结果是分别累加metric中2个变量的差值的平方,然后再求取均值,得到了最后的累计结果。这不就是均方差么

没看懂你的疑问是什么,我们就是在算均方差啊。

2.图2中得到的x_batch,y_batch都是列表么?假设batchsize=32,x_batch列表有32个训练样本?红框框起来的metric在计算时,是分别将y_batch列表中的元素和y_pred列表中的元素分别对应做差,然后求取平方,得到一个列表。在第二层for循环上一个step中上一个batch中计算出的这个metric列表结果,还会在下一个step中进行累加,然后除以step的次数求平均么?如果求平均的话那么一个epoch循环迭代完,最后的metric,是steps_per_eopch个batch最后的平均么,

x_batch, y_batch可以认为是样本列表。x_batch的size是(batch_size, dim1, ..), y_batch的size是(batch_size, 1) or (batch_size). 红框框里,loss和metric是分开算的,loss是stateless的,是单个batch的。metric是stateful的,算的是累积的。metric内部有状态,会帮你做平均,不用在后面自己计算,也不会产生列表结果。


> 3.计算每一个batch/step的loss数据的意义,每一个batch都是被N个样本打乱之后平均分出来一批批的么?还是每次取batch都把N个样本打乱呢?如果是打乱之后平均32个分出来的bacth,那么每一次迭代计算Loss的时候针对的32个样本是不同的,下一次32个样本同上一次不同,就算loss减小了,又不是同一批32个样本计算的,loss下降了,真的总体Loss就下降了么。图2中也没有算整体样本的平均loss呀,只是算的每一个step的Loss,到底有什么意义呢

一般情况下,是在一个epoch结束后才会重新打乱数据。计算loss的意义在于在很多step上看loss的趋势,如果一个模型收敛,那么下一个epoch上各个batch的loss要显著低于上一个epoch中各个batch的loss。相邻的batch之间的loss比较没有意义,因为数据都是随机采样拿到的,loss抖动会很大。







0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号