2017-08-09 147 views
0

我是StackOverflow以及DeepLearning和Keras/Tensorflow的新手。我希望我的问题不是那么愚蠢。Keras Concatenate TypeError:__init __()获得了多个参数'axis'的值

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

  • 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/z003hbdn/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' 

非常感谢您的帮助!

+1

请包括python打印的完整回溯图,因为不清楚该行的哪一部分会产生错误。 –

+0

@MatiasValdenegro:我编辑了我的帖子。你现在可以看到完整的回溯。这有帮助吗? Thx –

+0

请包括进口清单。 – paolof89

回答

1

我发现了一个似乎可行的解决方案!

我已经对代码做了两处更改。

  1. 而不是使用keras.layers.Concatenate我使用keras.layers.concatenate
  2. 我“排除”,从串联

相关的代码片断现在看起来是这样

的Conv2dTranspose步
trans5 = Conv2DTranspose(256, (2,2), strides=(2,2),padding='same')(conv4) 
up5 = keras.layers.concatenate([trans5, conv3], axis=3) 

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

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

相关问题