Model.fit() ValueError: 检查模型目标时出错:期望 dense_21 的形状为 (None, 1),但得到的数组形状为 (1708, 66)

这是我正在处理的代码:

from __future__ import print_functionfrom keras.models import Sequentialfrom keras.layers import Densefrom sklearn.cross_validation import train_test_splitimport numpynumpy.random.seed(7)data_pixels=np.genfromtxt("pixels_dataset.csv", delimiter=',')classes_dataset=np.genfromtxt("labels.csv",dtype=np.str , delimiter='\t')x_train, x_test, y_train, y_test = train_test_split(data_pixels, classes_dataset, test_size=0.3

x_train 的形状为 (1708, 3072)

array([[ 0.,  0.,  0., ...,  0.,  0.,  0.],       [ 0.,  0.,  0., ...,  1.,  1.,  1.],       [ 1.,  1.,  1., ...,  1.,  1.,  1.],       ...,        [ 0.,  0.,  0., ...,  1.,  1.,  1.],       [ 1.,  1.,  1., ...,  1.,  1.,  1.],       [ 0.,  0.,  0., ...,  1.,  1.,  1.]])

y_train 的形状为 (1708,)

array(['7', 'f', '3', ..., '6', 'o', 'O'],       dtype='|S5')

y_train 中的字符包括

: , : ; ! è à ä Aa..Zz 0-9

model = Sequential()model.add(Dense(12, input_dim=3072, activation='relu'))model.add(Dense(8, activation='relu'))model.add(Dense(1, activation='sigmoid'))model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

执行以下代码后我得到了错误:

model.fit(x_train,y_train, epochs=150, batch_size=10)

错误信息为

ValueError: could not convert string to float: A

我尝试了以下替代方案 :1)

x_train=n.array(x_train)y_train=n.array(y_train)

2)

 model.fit(x_train,str(y_train), epochs=150, batch_size=10)

但我得到了同样的错误。然后我尝试了另一个替代方案

from sklearn.preprocessing import LabelBinarizerencoder = LabelBinarizer()y_train = encoder.fit_transform(y_train)

然后我得到了一个新的错误:

ValueError: Error when checking model target: expected dense_21 to have shape (None, 1) but got array with shape (1708, 66)

回答:

修改以下代码行:

model.add(Dense(66, activation='softmax'))

和:

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

问题在于你想预测一个编码为长度为66的one-hot向量的char。在这种情况下,你需要设置输出层为所需的长度,并使用categorical_crossentropy损失函数和softmax激活函数。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注