git tag使用
1 | git tag -a <版本号> -m "<备注信息>" |
1 | git tag -a <版本号> -m "<备注信息>" |
在cv和numpy中截取区域的操作是不一样的
xmin, xmax, ymin, ymax
cv.draw(xmin: xmax, ymin: ymax)
a[ymin:ymax, xmin:xmax]
1 | ignored_params = list(map(id, model.fc.parameters())) |
右对齐
1 | A (4d array): 8 x 1 x 6 x 1 |
一层集装箱,每个集装箱里面装了物体, 如果一层的物体的stride是一样的,那么就合并成一个。
1 | typedef struct THStorage |
1 | typedef struct THTensor |
a = b
只有当a[:], a[1]的时候b会发生变化;
如果只是a=b, 那么只是改变了引用。
1 | a = np.zeros((2,2)) |
1 | a = np.zeros((2,2)) |
函数传入参数也是如此
1 | a = torch.Tensor([1, 3]) |



今早调用torch.max的时候出现了tuple,
后来发现是因为它返回2个值
使用MAE损失(特别是对于神经网络)的一个大问题是它的梯度始终是相同的,这意味着即使对于小的损失值,其梯度也是大的。这对模型的学习可不好。为了解决这个问题,我们可以使用随着接近最小值而减小的动态学习率。MSE在这种情况下的表现很好,即使采用固定的学习率也会收敛。MSE损失的梯度在损失值较高时会比较大,随着损失接近0时而下降,从而使其在训练结束时更加精确(参见下图)
如果我们只给一个预测结果来最小化MSE,那么该预测值应该是所有目标值的均值。但是如果我们试图最小化MAE,那么这个预测就是所有目标值的中位数。我们知道中位数对于离群点比平均值更鲁棒,这使得MAE比MSE更加鲁棒。