python - 使用 keras 库指定 Dense

标签 python keras

我稍微误解了如何为我的数据创建一个简单的序列。

数据具有以下维度:

X_train.shape
(2369, 12)

y_train.shape
(2369,)

X_test.shape
(592, 12)

y_test.shape
(592,)

这就是我创建模型的方式:

batch_size = 128
nb_epoch = 20
in_out_neurons = X_train.shape[1] 
dimof_middle = 100

model = Sequential()
model.add(Dense(batch_size, batch_input_shape=(None, in_out_neurons)))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(batch_size))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(in_out_neurons))
model.add(Activation('linear'))

# I am solving the regression problem, not the classification one
model.compile(loss="mean_squared_error", optimizer="rmsprop") 

history = model.fit(X_train, y_train,
                    batch_size=batch_size, nb_epoch=nb_epoch,
                    verbose=1, validation_data=(X_test, y_test))

错误信息:

Exception: Error when checking model input: expected dense_input_14 to have shape (None, 1) but got array with shape (2369, 12)ç

错误是:

Error when checking model target: expected activation_42 to have shape (None, 12) but got array with shape (2369, 1)

此错误发生在行:

model.add(Dense(in_out_neurons))

如何更改Dense以使其正常工作?

另一个问题是如何添加一个简单的自动编码器来初始化 ANN 的权重?

最佳答案

您的问题之一是您似乎误解了批处理是什么。 批处理是一次计算的训练样本数量,因此您不必一次从 X_train 计算一个训练样本,例如一次 100 个。这里重要的是,这与您的模型无关。

所以当你写

model.add(Dense(batch_size, batch_input_shape=(None, in_out_neurons)))

然后创建一个输出大小为一批的全连接层。这没有多大意义。

另一个问题是你的模型的输出是 12 个神经元,而你的 Y 只有一个值/神经元。您的模型如下所示:

  |
  v
[128]
[128]
[ 12]
  |
  v

那么 fit() 的作用是,它输入一个形状为 (128, 12) 的矩阵 ((batch size, X_train.shape[1] )) 到模型中,并尝试将最后一层的形状 (128,12) 的输出与批处理的相应 Y 值(形状(128,1))。

关于python - 使用 keras 库指定 Dense,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37793144/

相关文章:

python - 将一串元组拆分为元组

python - 无法以 SavedModel 格式保存 Tensorflow

python - 当列表值为字符串时,如何将 else 与列表理解一起使用?

python - dask.delayed 如何处理可变输入?

python - 如何在 Keras 中创建一个稀疏层(即并非所有神经元都相互连接)?

python - 使用 TensorFlow 作为依赖项部署 Google Cloud Functions

python - 我想用keras为深度学习添加一对一层

python - 为什么我会出现 Keras 形状不匹配的情况?

c++ - 为什么 python 的 dict 实现为哈希表,而 std::map 是基于树的?

python - 如何跟踪两个数据框中单个列的任何更改 - pandas