手写Python神经网络报错:'list'对象无astype属性寻求解决
神经网络构建报错:AttributeError: 'list' object has no attribute 'astype' 解决方法
问题描述
尝试用Python从零构建神经网络,运行代码时触发如下错误:
File "/Users/eungbaekkim9andy/coding/python/NeuralNetwork/NeuralNetwork.py", line 36, in <module> layer1.forward(X) File "/Users/eungbaekkim9andy/coding/python/NeuralNetwork/NeuralNetwork.py", line 27, in forward self.output = py.dot(inputs, self.weights) + self.biases File "/Users/eungbaekkim9andy/miniconda3/lib/python3.9/site-packages/nnfs/core.py", line 22, in dot return orig_dot(*[a.astype('float64') for a in args], **kwargs).astype('float32') File "/Users/eungbaekkim9andy/miniconda3/lib/python3.9/site-packages/nnfs/core.py", line 22, in <listcomp> return orig_dot(*[a.astype('float64') for a in args], **kwargs).astype('float32') AttributeError: 'list' object has no attribute 'astype'
错误原因分析
- 输入数据类型错误:传入
Layer_Dense.forward()的X是Python原生列表,而nnfs封装的矩阵乘法方法会尝试调用numpy数组的astype方法,列表没有这个属性。 - 输入维度不匹配:代码中定义
layer1 = Layer_Dense(2,5),表示输入是2维特征,但X里每个样本是4个特征,后续即使转成数组也会触发维度不匹配错误。 - 拼写错误:最后一行
activation1.forward(layer1.ouput)里的ouput是笔误,正确应为output。
修正后的完整代码
import numpy as py import nnfs as nf from nnfs.datasets import spiral_data nf.init() # 将X转换为numpy数组 X = py.array([[1, 2, 3, 2.5], [2.0, 5.0, 1.0, 2.0], [1.5, 2.7, 3.3,0.8]]) ##GENERATE DATASET### x,y = spiral_data(100,3) class Layer_Dense: def __init__(self, n_inputs,n_neurons): self.weights = 0.10 * py.random.randn(n_inputs,n_neurons) self.biases = py.zeros((1,n_neurons)) def forward(self,inputs): self.output = py.dot(inputs, self.weights) + self.biases class Activation_ReLU: def forward(self, inputs): self.output = py.maximum(0,inputs) # 修正输入维度为4,匹配X的特征数 layer1 = Layer_Dense(4,5) activation1 = Activation_ReLU() layer1.forward(X) print(layer1.output) # 修正拼写错误:ouput → output activation1.forward(layer1.output) print(activation1.output)
关键修正点说明
- 将
X从Python列表转为numpy数组:X = py.array([[...]]),确保矩阵乘法能正常处理。 - 调整
Layer_Dense的输入参数:Layer_Dense(4,5),4对应X中每个样本的特征数量。 - 修正属性名拼写:
layer1.ouput改为layer1.output,避免触发属性不存在的错误。
内容的提问来源于stack exchange,提问作者Andy kim
相关产品推荐
相关产品推荐

