数组中没有属性错误的Python dict
我使用下面的代码来显示数组数组中没有属性错误的Python dict,python,neural-network,Python,Neural Network,我使用下面的代码来显示数组 net = NeuralNetwork(4, 28 * 28, [128, 64, 10]) print(net(1).w) 在网络文件中 def __call__(self, counter): return self.params[counter] 在init中,我使用 self.params = [] np.random.seed(1) for i in range(len(neurons_
net = NeuralNetwork(4, 28 * 28, [128, 64, 10])
print(net(1).w)
在网络文件中
def __call__(self, counter):
return self.params[counter]
在init中,我使用
self.params = []
np.random.seed(1)
for i in range(len(neurons_per_layer)):
w = np.random.randn(2,2)
b = np.zeros([2, 1])
self.params.append({"w" : w, "b" : b})
return
然而,我得到了错误
'dict' object has no attribute 'w'
在print(net(1.w)
中,您试图访问dict
的属性w
,而dict
没有该属性
我想你真正想要的是print(net(1)['w'])
总之,您得到的是
“dict”对象没有属性“w”
,因为您试图从dict
调用属性,在本例中是w
,而dicts
没有名为w
的属性,您要在dict
上检索键的值w
字典有一组键和一组值
通过键访问值是dict[key]
使用dict.key
尝试从类dict访问属性
如果您希望通过instance.key
方法展示相同的行为,则需要包装字典或创建新类
否则,只需使用python公式
dict[key]
我想打印(net(1).w),我如何修改我的代码来显示这种行为。@MuhammadUmar:print(net(1)['w'])
@El我不想打印(net(1)['w']),是的,我知道我的代码会这样做,但我想退出我提到的行为,如何修改我的代码。你的意思是,你希望首先放入self.params
的东西实际具有.w
属性?然后,您需要将其设置为具有该属性的对象,而不是使用dict
。例如,通过编写另一个类来表示它。除了使用类之外,还有其他方法可以实现这种黑客行为,例如重载\uuu getattr\uuu
。(我认为Collections.namedtuples
或recordtype
也可以在这里使用?)