python - 'conv2d_1/convolution' 的 1 减 3 导致的负维度大小 (op : 'Conv2D' ) with input shapes: [? ,1,10000,80], [3,3,80,16]

标签 python tensorflow keras

我使用的是 Keras 版本 2.3.1 和 TensorFlow 2.0.0。

我在网络中第一个卷积层的实例化中引入了名义错误:

model = Sequential([
    Conv2D(16, 3, input_shape=(1, 10000, 80)),
    LeakyReLU(alpha=0.01),
    MaxPooling2D(pool_size=3),
    Conv2D(16, 3),
    LeakyReLU(alpha=0.01),
    MaxPooling2D(pool_size=3),
    Conv2D(16, 3),
    LeakyReLU(alpha=0.01),
    MaxPooling2D(pool_size=3),
    Conv2D(16, 3),
    LeakyReLU(alpha=0.01),
    MaxPooling2D(pool_size=3),
    Dense(256),
    LeakyReLU(alpha=0.01),
    Dense(32),
    LeakyReLU(alpha=0.01),
    Dense(1, activation='sigmoid')])

据我所知,TF 维度顺序应设置为(样本、行、列)。我的输入是形状为 1000, 80 的数组。

我已尝试了在网上找到的所有修复方法,包括:

K.common.set_image_dim_ordering('tf')
K.set_image_data_format('channels_last')
K.tensorflow_backend.set_image_dim_ordering('tf')
K.set_image_dim_ordering('tf')

但是,所有这些要么不会改变任何内容(如前两行的情况),要么在这些行上失败(后两行)。

最佳答案

如果 input_shape 错误,这些修复都不起作用。 Conv2D 层的 input_shape 应为 (宽度、高度、 channel ),样本尺寸不包含在内,因为它是由 Keras 隐式插入的。

您提供的 input_shape 将以宽度 1 进行解释,这是一个问题。您需要正确设置 input_shape 格式并添加 channel 维度。

关于python - 'conv2d_1/convolution' 的 1 减 3 导致的负维度大小 (op : 'Conv2D' ) with input shapes: [? ,1,10000,80], [3,3,80,16],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59514903/

相关文章:

python - OSX 上的 tensorflow : Failed to load the native TensorFlow runtime (No module named pywrap_tensorflow_internal)

python - Tensorflow 自定义指标 : SensitivityAtSpecificity

python - 通过 pip 安装后 Tensorboard 错误

python - 无法获取Tensorflow的卷积算法

python-3.x - keras模型上的特征选择

python-3.x - Flask/Keras webservice ModuleNotFoundError : No module named 'tensorflow_core.keras'

python - 模拟 Python 的内置打印功能

python - 在 WSL 发行版上的 Ubuntu 18.04 上安装 tkinter

python - 我怎样才能安全地将任意深度的路径传递给 web 应用程序(在本例中为 Flask)?

python - 在 Python 接口(interface)中定义属性是个好主意吗?