首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解算器赋值2: TwoLayerNet和CS231n

解算器赋值2: TwoLayerNet和CS231n
EN

Stack Overflow用户
提问于 2020-05-01 18:23:08
回答 2查看 322关注 0票数 0

当我尝试执行solver.train时,我遇到了一个错误消息。

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

然而,当我尝试执行求解器时,我遇到了一条错误消息。具体地说,我执行以下代码行:

代码语言:javascript
复制
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,它说:

代码语言:javascript
复制
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的维度不同。如果到这一部分的所有测试都是阳性的,那怎么可能呢?

EN

回答 2

Stack Overflow用户

发布于 2020-08-10 10:54:05

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

代码语言:javascript
复制
db = np.sum(... keepdims=True)

你需要的是公正

代码语言:javascript
复制
np.sum(...)
票数 0
EN

Stack Overflow用户

发布于 2021-06-20 01:50:37

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61540658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档