Keras 中 Conv1d 中的 input_shape 变量如何工作?

2024-03-03

再见, 我正在 Keras 上使用 CNN 1d,但我在输入形状变量方面遇到了很多麻烦。

我有一个包含 100 个时间步长和 5 个带有布尔标签的特征的时间序列。我想训练一个使用长度为 10 的滑动窗口的 CNN 1d。这是我编写的非常简单的代码:

from keras.models import Sequential
from keras.layers import Dense, Conv1D
import numpy as np

N_FEATURES=5
N_TIMESTEPS=10
X = np.random.rand((100, N_FEATURES))
Y = np.random.randint(0,2, size=100)


# CNN
model.Sequential()
model.add(Conv1D(filter=32, kernel_size=N_TIMESTEPS, activation='relu', input_shape=N_FEATURES
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

我的问题是出现以下错误:

  File "<ipython-input-2-43966a5809bd>", line 2, in <module>
    model.add(Conv1D(filter=32, kernel_size=10, activation='relu', input_shape=N_FEATURES))
TypeError: __init__() takes at least 3 arguments (3 given)

我还尝试将以下值传递给 input_shape :

input_shape=(None, N_FEATURES)
input_shape=(1, N_FEATURES)
input_shape=(N_FEATURES, None)
input_shape=(N_FEATURES, 1)
input_shape=(N_FEATURES, )

你知道代码有什么问题吗?或者你能解释一下背后的逻辑吗?输入形状Keras CNN 中的变量?

疯狂的是我的问题与以下相同:

Keras CNN 错误:预期序列有 3 个维度,但得到的数组形状为 (500, 400) https://stackoverflow.com/questions/53465066/keras-cnn-error-expected-sequence-to-have-3-dimensions-but-got-array-with-shap

但我无法用帖子中给出的解决方案来解决它。

Keras 版本是2.0.6-tf

Thanks


这应该有效:

from keras.models import Sequential
from keras.layers import Dense, Conv1D
import numpy as np

N_FEATURES=5
N_TIMESTEPS=10
X = np.random.rand(100, N_FEATURES)
Y = np.random.randint(0,2, size=100)

# Create a Sequential model
model = Sequential()
# Change the input shape to input_shape=(N_TIMESTEPS, N_FEATURES)
model.add(Conv1D(filters=32, kernel_size=N_TIMESTEPS, activation='relu', input_shape=(N_TIMESTEPS, N_FEATURES)))
# If it is a binary classification then you want 1 neuron - Dense(1, activation='sigmoid')
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

请参阅每行代码之前的注释。此外,输入形状Conv1D期望是(time_steps, feature_size_per_time_step)。您的代码的翻译是(N_TIMESTEPS, N_FEATURES).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keras 中 Conv1d 中的 input_shape 变量如何工作? 的相关文章

随机推荐