当我尝试执行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的维度不同。如果到这一部分的所有测试都是阳性的,那怎么可能呢?
发布于 2020-08-10 10:54:05
问题是当您在layers.py文件下定义函数affine_backward时,您设置了
db = np.sum(... keepdims=True)你需要的是公正
np.sum(...)发布于 2021-06-20 01:50:37
我在affine_backward中使用了db = np.ones((1, dout.shape[0])) @ dout,也得到了你的错误。将该行更改为db = dout.T @ np.ones(N)后,错误就消失了。
https://stackoverflow.com/questions/61540658
复制相似问题