2017-08-09 30 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中的某種錯誤?我應該報告這個問題嗎?

無論如何非常感謝您的幫助。欣賞它!

相關問題