【发布时间】:2018-09-15 00:15:09
【问题描述】:
我有张量形式的心电图数据(样本、时间步长、特征),例如(2464,15000,1)。
我的目标是对 1 到 5 范围内的标签进行分类。我对目标进行了热编码,使其具有尺寸 (2464,5)。
在开始使用 LSTM 之前,我想尝试一种基本方法。使用以下顺序模型:
def build_model():
model = models.Sequential()
model.add(layers.Dense(16, activation='relu',input_shape=(X_train.shape[1],X_train.shape[2])))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dense(y_train.shape[1], activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy',
optimizer='rmsprop',
metrics=['mae'])
return model
model=build_model()
history=model.fit(X_train,
y_train,
epochs=20,
batch_size=512,
validation_data=(X_val,y_val))
不幸的是,我得到一个值错误:
文件 "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\training.py", 第 113 行,在 _standardize_input_data '带形状' + str(data_shape))
ValueError:检查目标时出错:预期 dense_13 有 3 尺寸,但得到了形状为 (2464, 5) 的数组
我搜索了其他有问题的主题。大多数情况下,输出层不符合预期目标,在我的情况下为 5。所以这应该是正确的。另一个问题通常是目标不是一个热编码的。但这也完成了。错误告诉我有三个维度(基于输入?)。但是,如果我添加一个维度以获得 (2464,5,1) 的目标维度,ValueError 会发生变化,期望与输入数据具有相同的维度,而我必须使用 softmax 层将其减少到 y 目标。
ValueError: 检查目标时出错:预期 dense_23 的形状为 (15000, 1) 但得到的数组的形状为 (5, 1)
我很困惑。能给我一个提示吗?
额外:我也尝试展平输入,但也得到了一个(不同的)ValueError(...形状(1,)但得到了形状为(5,)的数组)。这里的扁平化是正确的方法吗?
感谢您的帮助。
【问题讨论】:
标签: python keras time-series