【问题标题】:ValueError when using Conv1D layer使用 Conv1D 层时出现 ValueError
【发布时间】:2021-02-09 18:02:13
【问题描述】:

我试图了解如何使用 Conv1D 层从向量中提取特征。这是我的代码:

import tensorflow as tf
from tensorflow.keras import models, layers
import numpy as np

# make 100 40000-dimensional vectors:
x = []
for i in range(100):
  array_of_random_floats = np.random.random_sample((40000))
  x.append(array_of_random_floats)
x = np.asarray(x)

# make 100 80000-dimensional vectors:
y = []
for i in range(100):
  array_of_random_floats = np.random.random_sample((80000))
  y.append(array_of_random_floats)
y = np.asarray(y)


model = models.Sequential([
  layers.Input((40000,)),
  layers.Conv1D(padding='same', kernel_initializer='Orthogonal', filters=16, kernel_size=16, activation=None, strides=2),
  # ...
  layers.Dense(80000)
])

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

history = model.fit(x=x,
                    y=y,
                    epochs=100)

这会产生以下错误:

ValueError: Input 0 of layer conv1d_20 is incompatible with the layer: : expected min_ndim=3, found ndim=2. Full shape received: (None, 40000)

我有点困惑,因为 Conv1D 层的文档似乎表明它可以处理向量...

【问题讨论】:

标签: python numpy tensorflow keras


【解决方案1】:

看来这只是您的尺寸有误。我发现如果您在 Conv1D 层中指定输入形状并扩展 x 的尺寸,它会起作用。

model = models.Sequential([
  layers.Conv1D(..., input_shape=(None, 40000)),
  # ...
  layers.Dense(80000)
])

history = model.fit(x=np.expand_dims(x, 1), y=y, epochs=100)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-13
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2020-09-24
    相关资源
    最近更新 更多