【发布时间】:2023-03-08 13:24:01
【问题描述】:
有数据包含A、B、C。C值应由A和B值预测。
数据被分割和缩放。
没有卷积层的模型。
from keras.models import Sequential
from keras.layers import Dense, Conv1D
features_count = len(X_train.columns)
model = Sequential([
Dense(64, input_shape=(features_count,)),
Activation('relu'),
Dense(32),
Activation('softmax'),
Dense(1),
])
model.compile(optimizer="adam", loss='mse')
model.fit(X_train.values, y_train.values, epochs=10, batch_size=1, verbose=1)
model.evaluate(X_test, y_test, batch_size=1)
结果:1.0033315420150757
添加了 Conv1D:
model = Sequential([
Conv1D(filters=256, kernel_size=5, padding='same', activation='relu', input_shape=(features_count,)),
Dense(64),
Activation('relu'),
Dense(32),
Activation('softmax'),
Dense(1),
])
结果:输入 0 与层 conv1d_3 不兼容:预期 ndim=3,发现 ndim=2
input_shape=(features_count,)
被替换为
input_shape=(features_count,1)
结果:检查输入时出错:预期 conv1d_4_input 为 3 维,但得到的数组形状为 (3, 2)
这样加卷积层有什么问题?如何在 Keras 模型中添加卷积层?
【问题讨论】:
-
你想在这里做什么?这些特点是什么?您确定卷积在这里有意义吗(我对此表示怀疑)?如果只有 2 个特征,为什么要将过滤器大小设置为 5?
-
我有一个 100Mb 的数据集,包含 750 个特征——在这里我对其进行了简化。正如我所写的,我需要从 A 和 B 预测值 C。这只是一个例子。我正在尝试添加一个卷积层来提高 MSE。过滤器大小为 5 - 好的,我会修复它
-
只有当输入数据是一个序列时,使用 Conv1D 才有意义,即值的顺序很重要。这适用于您的数据集吗?还是数据集中的每一行都独立于其他行?如果是这样,那么使用 Conv1D 或 RNN 就没有意义了。
-
@today 是的,它是每日股票收盘价。我正在尝试做的是从与所选股票代码具有足够相关性的其他股票价格预测股票价格。
-
此外,如果您不清楚一维卷积的工作原理,this answer 可能会帮助您更好地理解它。
标签: python keras conv-neural-network