#python #neural-network
#python #нейронная сеть
Вопрос:
Я использую следующий код для отображения массива
net = NeuralNetwork(4, 28 * 28, [128, 64, 10])
print(net(1).w)
В файле NeuralNetwork
def __call__(self, counter):
return self.params[counter]
при инициализации я использую
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'
Ответ №1:
В print(net(1).w)
вы пытаетесь получить доступ к атрибуту w
dict
, которого dict
нет.
Я думаю, что вы действительно хотите print(net(1)['w'])
В итоге вы получаете, 'dict' object has no attribute 'w'
поскольку вы пытаетесь вызвать атрибут из dict
, в данном случае w
, и dicts
у вас нет вызванного атрибута w
, вы хотите получить значение для dict
для ключа w
.
Комментарии:
1. Я хочу выполнить print(net(1).w) , как я могу изменить свой код, чтобы продемонстрировать это поведение.
2. @MuhammadUmar:
print(net(1)['w'])
3. @El Я не хочу выполнять print(net(1)[‘w’]), да, я понимаю, что мой код делает это, но я хочу продемонстрировать поведение, упомянутое мной, как я могу изменить свой код.
4. Вы имеете в виду, вы хотите, чтобы вещь, которую вы помещаете в
self.params
в первую очередь, действительно имела этот.w
атрибут? Тогда вам нужно сделать так, чтобы это было что-то, у чего есть этот атрибут, вместо использованияdict
. Например, написав другой класс для его представления.5. Примечание. Существуют другие способы (помимо использования класса) реализовать такой взлом, например, перегрузка
__getattr__
. (Я думаю, чтоCollections.namedtuples
orrecordtype
также может работать здесь?)
Ответ №2:
Словарь имеет набор ключей и набор значений.
Доступ к значению через ключ — это dict[key]
использование dict.key
того, что вы пытаетесь получить доступ к атрибуту из класса dict.
Если вы хотите продемонстрировать такое же поведение с помощью instance.key
метода, вам нужно будет обернуть словарь или создать новый класс.
В противном случае просто используйте формулу python dict[key]
.