1.
相当于设置断点,来调试,让程序终止在这里,他的上面可以写自己的测试代码。
2.
这里第一点疑问就是为什么括号里面有逗号。有疑问的话先思考这最核心一个括号加一个数字,那就在终端打印一下(打印一个括号里面没有逗号的,再打印一下括号里面有逗号的),看一下类型,如果有差别,就是逗号的作用了。调试一下。
可以看出(521)是int,(521,,)就是元组了。
第二点这两个数字的来源和含义。含义是标准化,左边是均值,右边是标准差。数字减去均值除以标准差。
https://blog.csdn.net/zjc910997316/article/details/93465763
https://jianzhuwang.blog.csdn.net/article/details/104272600
3.
log_softmax
softmax的结果上再多做一次log运算,这个log就是数值上的log。不要害怕。
https://blog.csdn.net/hao5335156/article/details/80607732
softmax 和为1:
逐列和为1即一行和为1,因为是行向量,所以一行是一个样本的输出。
4.
F.nll_loss(output, target)
5.
enumerate
疑问 训练集中
但是测试集中是
为什么测试集中没有enumerate?训练集有。正确思路是查看enumerate的用法。
https://www.cnblogs.com/xiaoboge/p/9404000.html
enumerate是枚举,会返回索引,在需要索引时返回它,训练集需要,测试集不需要,所以测试集没有,如果测试集加上会出现错误,因为data返回接收的是索引值,因此是Int类型,本来应该返回的是张量类型。
打印一下data看看它是啥,看它是0确实是索引值。自然之后都不能继续了。
由此可以把代码改成下面图片这样子就没问题了,因为可以找一个接受索引。不过test用不到,不如直接不用enumerate()函数了。
在pycharm测试一下enumerate用法:
6. torch,max中的keppdim用法,保持输入维度,不然降维。 还是二维向量。
https://blog.csdn.net/zylooooooooong/article/details/112576268