ValueError: 检查目标时出错:期望dense_22的形状为(100, 50),但得到的数组形状为(1, 50)

我正在训练一个神经网络来预测一组文档的文档频率。

主要的想法是将一个包含100个文档和50个标记的矩阵映射到相应的文档频率数组上。

X = (n_samples, 100, 50) -> y = (n_samples, 1, 50)

我的代码是:

model = Sequential()model.add(Dense(50, activation='sigmoid', input_shape=(100,50)))model.add(Dense(50))model.compile(optimizer='rmsprop', loss='mse')model.fit(X_train, y_train, epochs=50)

但我遇到了一个错误:

ValueError: Error when checking target: expected dense_22 to have shape (100, 50) but got array with shape (1, 50)

回答:

这是因为你的输入是二维的,所以你的模型概要如下所示。

_________________________________________________________________Layer (type)                 Output Shape              Param #   =================================================================dense_1 (Dense)              (None, 100, 50)           2550      _________________________________________________________________dense_2 (Dense)              (None, 100, 50)           2550      =================================================================Total params: 5,100Trainable params: 5,100Non-trainable params: 0_________________________________________________________________

尝试在dense_1dense_2之后重塑张量形状,通过在第二个轴上求和或平均来获得与你的Y相同的形状。

这里是我的示例供你参考

我编写了一个自定义的求和函数,以在第二个轴上求和,使得形状为(None, 100, 50)的张量变为(None, 1, 50)。然后,添加另一个Dense层。

import keras.backend as Kfrom keras.layers import Dense, Lambdafrom keras.models import Sequentialdef mysum(x):     return  K.sum(x, axis=1, keepdims=True) def mysum_output_shape(input_shape):     shape = list(input_shape)     print(shape)    shape[1] = 1     return tuple(shape) # 随机生成数据import numpy as npX_train = np.random.normal(0, 1, (50,100,50))y_train = np.ones((50, 1, 50))model = Sequential()model.add(Dense(50, activation='sigmoid', input_shape=(100,50)))model.add(Lambda(mysum, output_shape=mysum_output_shape)) model.add(Dense(50))model.compile(optimizer='rmsprop', loss='mse')model.fit(X_train, y_train, epochs=50)

了解你的输入是什么以及张量如何通过每一层进行转换是非常重要的。希望这对你有帮助!

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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