2017-08-09 11 views
0

私はStackOverflowとDeepLearningとKeras/Tensorflowの新機能です。私は私の質問がそんなにばかげていないことを願っています。Keras Concatenate TypeError:__init __()は引数 'axis'に複数の値を持っています

現在、Unetを再作成しようとしています。 2つのレイヤの出力をマージする必要がある「アップコンボリューション」の部分で、私は前述のエラーを受け取りました。 (TypeError例外: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

私はうまくいくソリューションを見つけました!

私はコードを2回変更しました。

  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) 

これはケラスの何らかのバグでしょうか?私はその問題を報告すべきでしょうか?

とにかくお世話になりました。感謝します!

関連する問題