ValueError: Shapes (None, 2, 28) and (None, 2) are incompatible // How can i transform 2 onehotvectors to one

ValueError: Shapes (None, 2, 28) and (None, 2) are incompatible // How can i transform 2 onehotvectors to one

我正在处理分类问题。我使用的数据来自 Aras 数据集。其中一行数据如下所示:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 17

前 19 列代表传感器数据(二进制)。最后两列代表居住在收集数据的家庭中的两个人的活动。

我已将数据集分成不同的部分,因为它一点也不小,30 天,每秒一个数据点。

我想用我的模型做什么:我想训练我的模型,以便它可以预测 A 和 B 此刻在做什么。

这是我的代码(X 数据:第 1-19 列;Y-Data_Column 20-21):

*import keras
from keras import losses
from keras import regularizers
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
from keras.utils import to_categorical
import matplotlib.pyplot as plt
from tensorflow.keras import optimizers
batch_size =512
no_epochs = 5
verbosity = 1
x_train=np.loadtxt('x_train.txt')
x_val=np.loadtxt('x_val.txt')
x_test=np.loadtxt('x_test.txt')
y_train=np.loadtxt('y_train.txt')
y_val=np.loadtxt('y_val.txt')
y_test=np.loadtxt('y_test.txt')
y_train_onehot=keras.utils.to_categorical(y_train)
y_val_onehot=keras.utils.to_categorical(y_val)
y_test_onehot=keras.utils.to_categorical(y_test)
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=[19,]))
model.add(Dense(128, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(
    learning_rate=0.000001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False,
    name='Adam'),
    metrics=['accuracy'])
model.summary()
history=model.fit(x_train, y_train_onehot, batch_size, epochs=no_epochs,verbose=verbosity, shuffle=True,validation_data=(x_val, y_val_onehot))

错误:ValueError:形状 (None, 2, 28) 和 (None, 2) 不兼容


当我不将标签转换为 onehot 格式时它正在工作,但这不是一个有用的结果(我猜)。问题是,我最后得到了这个值错误,我知道这与向量内部有两个单热向量有关,但我不知道如何解决这个问题。

--> 我试图将两个 onehot 向量合二为一,但是每行都有 729 列(每个标签组合为 27*27),但是标签数据变大了 python 不会编写脚本。

Windows 10 喀拉斯 2.4.3 张量流 2.3.1 Python3.7.9

我对这整个话题都不熟悉,所以如果我的问题很愚蠢,请不要生我的气。

您的模型需要两个输出。使用 Sequential API 是不可能的。使用 Functional API

创建一个新模型