神经网络'numpy.float64'对象不能解释为整数



我试图在24种元素的化学成分矩阵上使用一个简单的NN,总共270次分析(25X270,包括标签(。然而,当我运行梯度下降时,它显示错误"numpy.foat64"对象不能被解释为整数。

data = np.array(data)
m, n = data.shape
np.random.shuffle(data) 
data_dev = data[0:60].T
Y_dev = data_dev[0]
Y_dev = np.array(Y_dev, dtype=np.float_)
X_dev = data_dev[1:n]
X_dev = preprocessing.normalize(X_dev)
data_train = data[60:m].T
Y_train = data_train[0]
Y_train = np.array(Y_train, dtype=np.float_)
X_train = data_train[1:n]
X_train = preprocessing.normalize(X_train)
_,m_train = X_train.shape

在此处输入图像描述

在此处输入图像描述

这是我得到的错误:在此处输入图像描述

我尝试过MNIST数据集的代码(将第一个W1的结构更改为10784,并将每个像素数据除以255以避免任何冲突(,它运行良好。我还检查了数组的数据类型,结果是一样的(float64(。我不知道为什么我的数据有问题。

Y数组的类型是什么?

如果它是float64,那么问题是Y.max((返回浮点值,但在定义数组大小时需要整数。所以你需要改变:

Y = np.array([1, 2, 3], np.float64)
one_hot_Y = np.zeros((Y.size, Y.max() + 1))  # will not work

one_hot_Y = np.zeros((Y.size, int(Y.max()) + 1))

或者将Y的类型转换为int:Y.astype(int)

最新更新