因为Pytorch对Apple M1芯片的支持的问题,此处的代码直接在使用m1芯片的mac上是无法直接运行的。原因在于torch.argmax()这个函数,运行时会产生一个“-9xxxxxxx”的错误值,可替代的改法是使用torch.max()函数,例如“_,y=y.max(地面=1)”。这个问题在全书多处地方出现,所有使用了argmax()函数的地方都有可能出现。是不是应该指出一下?
图中的 .mean( ) 不用加,因为下图中建立 loss= nn.CrossEntropyLoss(),默认的就是用 reduction=‘mean’,这将会在求交叉熵时,自动求批量里的每个输出与对应标签的交叉熵的平均值。当然,在此文中y_hat与y的每一行代表的是 时间步数*样本数目,且他们的排列是按照:同一批次里不同样本的同一时间步挨着,比如:一个批次有10个样本,每个样本有时间步5,那么y_hat与y的每行依次是 样本1 ,时间步1 ,样本2, 时间步1…样本9 ,时间步5,样本10 ,时间步5
要求Whh的梯度啊,你地知道Whh变化的快慢,然后才能修正Whh啊,你求state梯度有啥用,你知道state变化快慢,下一步是用他的梯度修正state?求谁的梯度,就是求谁的变化快慢的衡量指标,然后用他变化快慢的这个程度去修正他自己的值
如果输入和输出的行数都不一样,应该怎么做呢。我知道列数不同的时候可以怎么做