2017-08-09 3 views
0

Ich bin neu zu StackOverflow sowie zu DeepLearning und Keras/Tensorflow. Ich hoffe meine Frage ist nicht so dumm.Keras Verketten TypeError: __init __() hat mehrere Werte für Argument 'Achse'

Ich versuche derzeit, das Unet neu zu erstellen. Am "upconvolution" Teil, wo die Ausgänge von zwei Layern zusammengeführt werden müssen, habe ich den erwähnten Fehler bekommen. (Typeerror: init() bekam mehrere Werte für Argument 'Achse')

  • Keras Version: 2.0.6
  • Tensorflow-gpu: 1.2.1

Code-Snippet:

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) 

Detaillierte Fehlermeldung:

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' 

Vielen Dank für Ihre Hilfe!

+1

Bitte fügen Sie das komplette von python gedruckte Backtrace ein, da nicht klar ist, welcher Teil der Zeile den Fehler erzeugt. –

+0

@MatiasValdenegro: Ich habe meinen Beitrag bearbeitet. Sie können jetzt die vollständige Rückverfolgung sehen. Hilft das? Thx –

+0

Bitte fügen Sie die Importliste hinzu. – paolof89

Antwort

1

Ich habe eine Lösung gefunden, die zu funktionieren scheint!

Ich habe zwei Änderungen am Code vorgenommen.

  1. Statt mit keras.layers.Concatenate ich keras.layers.concatenate
  2. I "ausgeschlossen" die Conv2dTranspose Schritt aus der Verkettung

Der entsprechende Code-Schnipsel sieht nun wie folgt

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

Könnte dies eine Art Bug in Keras sein? Soll ich dieses Problem melden?

Vielen Dank für Ihre Hilfe trotzdem. Bin dankbar!

Verwandte Themen