多层感知机的从零开始实现 讨论区


#42

请问定义模型时为什么最后的返回值没有转换成softmax值

def net(X):
    X = X.reshape((-1, num_inputs))
    H = relu(nd.dot(X, W1) + b1)
    return nd.dot(H, W2) + b2

#43

转换成softmax和计算交叉熵都放到下面的函数中了


#44

计算图?


#45


#46

你还需要再改两处


#47

把num_epochs改为50的情况下:
尝试只把 batch_size 从 256 改为 8,就永远也优化不到理想的效果了:joy:,精度最终也在18%左右
尝试只把batch_size 改为16,精度从未超过55%

所以,如果有条件的话,最好还是买内存大的GPU:rofl:

不知道这样理解对不对?


#48

在数据多的情况下,把batch_size设置的大一点应该会提高精度。是的,还是用GPU训练快


#49

output.argmax()取的是序号,跟本身的值没有关系。


#50

隐含层输出多少节点是怎么定的


#51

错了,少个0,应该是0.0625。


#52

超参,自己估计着定


#53

加多了一层隐藏层之后,调大epoch,会发现训练误差有时会突然跳高,有时会出现NaN,是否出现和初始化参数(随机)有关。

增大hidden输出,增加隐藏层,都增加了模型容量,也能观察到训练误差和测试误差相对都有降低。