无法定义Keras中DNN的第一层

我正在尝试设计一个多类别分类神经网络。

我的train_x数据集包含23个样本,每个样本有37个特征(维度:23*37)
train_y包含每个样本的输出(维度:23*7)[7个标签/类别]。我对每个样本的输出使用了一键编码。
len(words)是特征的数量。这是我的模型设计:

model = tf.keras.models.Sequential([    tf.keras.layers.Dense(units=len(words), input_shape=[len(words)]),    tf.keras.layers.Dense(8, activation="relu"),    tf.keras.layers.Dense(8, activation="relu"),    tf.keras.layers.Dense(len(labels), activation="softmax")])

我使用了Adam优化器作为优化器,并使用了稀疏分类熵作为损失函数。

model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=['accuracy'])model.fit(train_x, train_y, epochs=100)

我得到了以下追溯调用:

Epoch 1/100Traceback (most recent call last):  File "main.py", line 83, in <module>    model.fit(train_x, train_y, epochs=100, callbacks=[callbacks])  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\keras\engine\training.py", line 66, in _method_wrapper    return method(self, *args, **kwargs)  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\keras\engine\training.py", line 848, in fit    tmp_logs = train_function(iterator)  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\eager\def_function.py", line 580, in __call__    result = self._call(*args, **kwds)  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\eager\def_function.py", line 644, in _call    return self._stateless_fn(*args, **kwds)  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\eager\function.py", line 2420, in __call__    return graph_function._filtered_call(args, kwargs)  # pylint: disable=protected-access  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\eager\function.py", line 1661, in _filtered_call    return self._call_flat(  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\eager\function.py", line 1745, in _call_flat    return self._build_call_outputs(self._inference_function.call(  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\eager\function.py", line 593, in call    outputs = execute.execute(  File "C:\Users\aaman\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\eager\execute.py", line 59, in quick_execute    tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,tensorflow.python.framework.errors_impl.InvalidArgumentError:  logits and labels must have the same first dimension, got logits shape [23,7] and labels shape [161]         [[node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits (defined at main.py:83) ]] [Op:__inference_train_function_709]Function call stack:train_function

我已经在各种网站上搜索了两天。但他们都对第一层展平了输入数据。所有这些都使用灰度图像或RGB图像作为输入。所有这些都要求第一层被展平。但我的输入数据已经是展平的了。

据我所知,我在第一层得到了这个追溯调用。我可能误解了units和input_shape的概念,因此错误地定义了它们。


回答:

sparse_categorical_crossentropy更改为categorical_crossentropy

Related Posts

如何对SVC进行超参数调优?

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

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

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