首页 文章

Keras模型构建 - ValueError:检查目标时出错:期望dense_24有形状(None,1)但是有形状的数组(576,2)

提问于
浏览
0

我正在尝试构建一个keras模型,我有576个样本,4个输入变量和1个目标变量,它们是1或0.我相信我的目标的维度/格式有问题,或者我模型的最后一层的尺寸 . 我撞墙了,可以使用你的协助 .

我尝试的第一件事是将我的目标变量转换为二进制numpy数组,但是当我输入以下代码时:

import pandas as pd
from keras.layers import Dense
import numpy as np
from keras.models import Sequential
from keras.utils.np_utils import to_categorical

n_cols = predictors.shape[1]
target_b = to_categorical(target)
model = Sequential()
model.add(Dense(6, activation='relu',input_shape=(n_cols,)  ))
model.add(Dense(1))
model.compile(optimizer = 'adam', loss ='categorical_crossentropy',metrics=   ['accuracy'] )
model.fit(predictors, target_b, validation_split=.3)

我收到以下错误:

ValueError: Error when checking target: expected dense_24 to have shape (None, 1) but got array with shape (576, 2)

当我试图将我的目标变量保持为整数numpy ndarray时,我使用了sparse_categorical_crossentropy,但是收到了这个错误:

InvalidArgumentError (see above for traceback): Received a label value of 1 which is outside the valid range of [0, 1).  Label values: 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1
 [[Node: SparseSoftmaxCrossEntropyWithLogits_6/SparseSoftmaxCrossEntropyWithLogits = SparseSoftmaxCrossEntropyWithLogits[T=DT_FLOAT, Tlabels=DT_INT64, _device="/job:localhost/replica:0/task:0/cpu:0"](Reshape_13, Cast_30)]

我认为我需要做的就是改变目标变量或模型尺寸,但是我不确定要改变哪一个,我不知道如何改变 . 我非常感谢你的指导 . 谢谢!

3 回答

  • 2

    几种方式:

    • 将最后一层更改为 Dense(2, activation='softmax')

    • 删除 to_categorical 行,并使用 Dense(2, activation='softmax')loss='sparse_categorical_crossentropy'

    • 删除 to_categorical 行,并使用 Dense(1, activation='sigmoid')loss='binary_crossentropy'

  • 0

    您在Dense图层中的输入形状需要一维输入,但看起来您想要输入的数据是2D . 您可以将输入的大小调整为 input_shape=(576, 2) .

  • 0

    你的最后一层应该是 Dense(2) . 这是因为你的target_b矩阵必须是shape(576,2) .

相关问题