gpt4 book ai didi

python - TensorFlow:如何使用表格(一维)特征的卷积层?

转载 作者:行者123 更新时间:2023-12-01 06:34:03 28 4
gpt4 key购买 nike

在 Python 中使用 TensorFlow,我正在制作一个以一维数组作为输入的神经网络。我想在网络中添加一个卷积层,但似乎无法让它工作。

我的训练数据如下所示:

n_samples = 20
length_feature = 10
features = np.random.random((n_samples, length_feature))
labels = np.array([1 if sum(e)>5 else 0 for e in features])

如果我制作一个像这样的神经网络

model = keras.Sequential([
keras.layers.Dense(10, activation='relu', input_shape=(length_feature, )),
keras.layers.Dense(2, activation='softmax')
])

model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

history = model.fit(features, labels, batch_size=5, validation_split = 0.2, epochs=10)

这工作得很好。但是如果我添加一个像这样的卷积层

model = keras.Sequential([
keras.layers.Dense(10, activation='relu', input_shape=(length_feature, )),
keras.layers.Conv1D(kernel_size = 3, filters = 2),
keras.layers.Dense(2, activation='softmax')
])

然后我收到错误

ValueError: Input 0 of layer conv1d_4 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 10]

如何向我的神经网络添加卷积层?

最佳答案

Conv1D 需要 3D 输出(batch_size宽度 channel )。但密集层会产生 2D 输出。只需将您的模型更改为以下内容,

model = keras.Sequential([
keras.layers.Dense(10, activation='relu', input_shape=(length_feature, )),
keras.layers.Lambda(lambda x: K.expand_dims(x, axis=-1))
keras.layers.Conv1D(kernel_size = 3, filters = 2),
keras.layers.Dense(2, activation='softmax')
])

其中 Kkeras.backendtf.keras.backend,具体取决于您使用哪一个来获取图层。

关于python - TensorFlow:如何使用表格(一维)特征的卷积层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59756806/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com