tensorflow - Keras 连接类型错误 : __init__() got multiple values for argument 'axis'

标签 tensorflow keras keras-layer

我目前正在尝试重新创建 Unet。在需要合并两层输出的“上卷积”部分,我得到了提到的错误。 (类型错误: init () 为参数“axis”获得了多个值)

  • Keras 版本:2.0.6
  • Tensorflow-GPU:1.2.1

  • 代码片段:
    import gzip
    import os
    
    from six.moves import urllib
    import tensorflow as tf
    import numpy as np
    
    from keras.models import Sequential, Model
    from keras.layers import Input, Dropout, Flatten, Concatenate
    from keras.layers import Conv2D, MaxPool2D, Conv2DTranspose
    from keras.utils import np_utils
    import keras.callbacks
    
    # Define model architecture
    input1 = Input((X_train.shape[1], X_train.shape[2], 1))
    
    conv1 = Conv2D(64,(3,3), activation='relu', padding='same')(input1)
    conv1 = Dropout(0.2)(conv1)
    conv1 = Conv2D(64,(3,3), activation='relu', padding='same')(conv1)
    pool1 = MaxPool2D(pool_size=(2,2))(conv1)
    
    conv2 = Conv2D(128,(3,3), activation='relu', padding='same')(pool1)
    conv2 = Dropout(0.2)(conv2)
    conv2 = Conv2D(128,(3,3), activation='relu')(conv2)
    pool2 = MaxPool2D(pool_size=(2,2))(conv2)
    
    conv3 = Conv2D(256,(3,3), activation='relu', padding='same')(pool2)
    conv3 = Dropout(0.2)(conv3)
    conv3 = Conv2D(256,(3,3), activation='relu', padding='same')(conv3)
    pool3 = MaxPool2D(pool_size=(2,2))(conv3)
    
    conv4 = Conv2D(512,(3,3), activation='relu', padding='same')(pool3)
    conv4 = Conv2D(512,(3,3), activation='relu', padding='same')(conv4)
    
    up5 = Concatenate([Conv2DTranspose(256, (2,2), strides=(2,2),padding='same')(conv4), conv3], axis=3)
    conv5 = Conv2D(256,(3,3), activation='relu', padding='same')(up5)
    conv5 = Conv2D(256,(3,3), activation='relu', padding='same')(conv5)
    

    详细的错误信息:
    Traceback (most recent call last):
    
    File "<ipython-input-48-d61955511ff9>", line 1, in <module>
    runfile('C:/Users/.../MNIST_Unet_new.py', wdir='C:/Users/.../Documents/KerasTutorials')
    
    File "C:\ProgramData\Anaconda3\envs\tensorflow-gpu\lib\site-packages\spyder\utils\site\sitecustomize.py", line 688, in runfile
    execfile(filename, namespace)
    
    File "C:\ProgramData\Anaconda3\envs\tensorflow-gpu\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)
    
    File "C:/Users/.../MNIST_Unet_new.py", line 107, in <module>
    up5 = Concatenate([Conv2DTranspose(256, (2,2), strides=(2,2),padding='same')(conv4), conv3], axis=3)
    
    TypeError: __init__() got multiple values for argument 'axis'
    

    最佳答案

    我找到了一个似乎有效的解决方案!

    我对代码做了两处更改。

  • 而不是使用 keras.layers.Concatenate 我使用 keras.layers.concatenate
  • 我从连接中“排除”了 Conv2dTranspose 步骤

  • 相关的代码片段现在看起来像这样
    trans5 = Conv2DTranspose(256, (2,2), strides=(2,2),padding='same')(conv4)
    up5 = keras.layers.concatenate([trans5, conv3], axis=3)
    

    这可能是 keras 中的某种错误吗?我应该报告那个问题吗?

    无论如何,非常感谢您的帮助。欣赏它!

    关于tensorflow - Keras 连接类型错误 : __init__() got multiple values for argument 'axis' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584258/

    相关文章:

    tensorflow - 如何使用自定义优化器加载 keras 保存的模型

    python - Keras 模型密集输入形状抛出错误

    python - 您的 CPU 支持此 TensorFlow 二进制文件未编译为使用 : AVX2 FMA 的指令

    keras - Keras 中的嵌入是什么?

    python-3.x - 神经网络的分辨率取决于哪些因素?

    tensorflow - "batch size in tf.keras.preprocessing.timeseries_dataset_from_array"和 "batch size in model.fit"有什么区别?

    tensorflow 工具 : can't figure out how to build/run summarize_graph

    python - 导入错误 : No module named 'tensorflow.contrib.lite.python.tflite_convert'

    python - Tensorflow 2 -Keras SAVE/LOAD 模型错误(DenseFeatures 和 DistributionLambda 层)

    python - 如何将多个keras层封装在一层模块中?