【发布时间】:2018-04-27 20:05:44
【问题描述】:
我想提供以下形状的神经网络输入: 每个训练条目都是一个尺寸为 700x10 的二维数组。共有204个培训条目。 标签只是大小为 204 的一维数组(二进制输出)
我尝试只使用密集层:
model = Sequential()
model.add(Dense(300, activation='relu', input_shape=(700, 10)))
model.add(Dense(1, activation='sigmoid'))
然后我收到以下错误(与第一层的 input_shape 无关,但在输出验证期间):
ValueError: Error when checking target: expected dense_2 to have 3 dimensions, but got array with shape (204, 1)
204 - 训练数据量。
堆栈跟踪:
model.fit(xTrain, yTrain, epochs=4, batch_size=6)
File "keras\models.py", line 867, in fit
initial_epoch=initial_epoch)
File "keras\engine\training.py", line 1522, in fit
batch_size=batch_size)
File "keras\engine\training.py", line 1382, in _standardize_user_data
exception_prefix='target')
File "keras\engine\training.py", line 132, in _standardize_input_data
我在调试 Keras 代码时发现的:
在训练前的验证期间失败。它验证输出数组。
根据神经网络结构,第一个 Dense 层以某种方式产生 700 个一维输出,然后它失败了,因为我的输出只是包含 204 的一维数组。
我该如何克服这个问题?我试图在 Dense() 层之后添加 Flatten(),但它可能会以一种不好的方式影响准确性:我想保留特定于 700 个数组分组中的一个点的信息。
【问题讨论】:
标签: tensorflow neural-network keras