2017-11-17 3 views
0

Ich versuche, ein CNN mit Keras zu 20x20 Patches von einem größeren Bild von 600x600 zu verarbeiten.Verwendung von Patch von größeren Bild als Eingabe Dim Keras CNN gibt Fehler 'Tensor' Objekt hat kein Attribut '_keras_history' *

Als ich den Lauf, den Code versuchen, unten ich einen Fehler Attribute erhalten: ‚Tensor‘ Objekt hat kein Attribut ‚_keras_history‘

Der Code unten nur auf den ersten 20 x 20 Patch aussehen soll aus von insgesamt 900 versuche ich, diese Funktion zu erhalten, bevor ich versuche, das gesamte Eingabebild zu durchlaufen.

Ich verstehe nicht, warum es den Fehler zurückgibt, da jede Schicht mit einer Keras-Schicht erzeugt wird und ich keine anderen Operationen auf den Tensor angewendet habe?

Ich verwende Tensorflow 1.3 und Keras 2.0.6.

nb_filters=16 

input_image=Input(shape=(600,600,3)) 
Input_1R=Reshape((900,20,20,3))(input_image) 
conv1=Convolution2D(nb_filters,(5,5),activation='relu',padding='valid')(Input_1R[:,0]) 
conv4=Convolution2D(1,(6,6),activation='hard_sigmoid',padding='same')(conv1) 
dense6=Dense(1)(conv4) 
output_dense=dense6 
model = Model(inputs=input_image, outputs=output_dense) 

Antwort

1

Der Fehler tritt auf, weil der Schneidvorgang Input_1R[:,0] nicht in einer Keras Schicht durchgeführt. Sie können es in eine Lambda Schicht einwickeln:

sliced = Lambda(lambda x: x[:, 0])(Input_1R) 
conv1 = Convolution2D(nb_filters, (5,5), activation='relu', padding='valid')(sliced) 
Verwandte Themen