You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

手写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'

错误原因分析

  1. 输入数据类型错误:传入Layer_Dense.forward()的X是Python原生列表,而nnfs封装的矩阵乘法方法会尝试调用numpy数组的astype方法,列表没有这个属性。
  2. 输入维度不匹配:代码中定义layer1 = Layer_Dense(2,5),表示输入是2维特征,但X里每个样本是4个特征,后续即使转成数组也会触发维度不匹配错误。
  3. 拼写错误:最后一行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:53:10