【问题标题】:CS231n assignment 2: TwoLayerNet and SolverCS231n 作业 2:TwoLayerNet 和 Solver
【发布时间】:2020-08-15 20:02:44
【问题描述】:

我在尝试执行solver.train 时遇到错误消息。

我完成了 fc_net 的编辑,包括初始化、前馈、损失和反向传播。当我执行打算将他们的解决方案与我的解决方案进行比较的 FullyConnectedNets 代码时,一切都很顺利(我的分析梯度与数字梯度相同,相同的损失等)尺寸也相同(否则比较将不起作用)。

尽管如此,当我尝试执行求解器时,我遇到了错误消息。具体来说,我执行以下几行:

model = TwoLayerNet()

solver = Solver(model, data,

update_rule='sgd',

optim_config={

'learning_rate': 1e-3,

},

lr_decay=0.95,

num_epochs=10, batch_size=100,

print_every=100)

solver.train()

我收到的错误消息来自optim.py,它说:

41 config.setdefault('learning_rate', 1e-2)

42

---> 43 w -= config['learning_rate'] * dw

44 return w, config

45 ValueError: non-broadcastable output operand with shape (100,1) doesn't match the broadcast shape (100,100)

有人遇到类似的错误吗?从消息中我了解到梯度和 W 的尺寸不同。如果这部分的所有测试都是阳性的,那怎么可能?

【问题讨论】:

    标签: numpy neural-network


    【解决方案1】:

    问题是当你在layers.py文件下定义函数affine_backward时,你设置了

    db = np.sum(... keepdims=True)
    

    你需要它只是

    np.sum(...)
    

    【讨论】:

      【解决方案2】:

      我在affine_backward 中使用了db = np.ones((1, dout.shape[0])) @ dout,也得到了您的错误。将行改成db = dout.T @ np.ones(N)后,错误就消失了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-10
        • 1970-01-01
        • 2014-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多