Hat K. Funktion Methode von Keras mit Tensorflow backend-arbeiten mit Netzwerk-Schichten?
Habe ich vor kurzem begonnen haben, mit Keras zu bauen neuronale Netze. Ich baute ein einfaches CNN zu klassifizieren MNIST Datensatz. Vor dem lernen das Modell, das ich verwendet K.set_image_dim_ordering('th')
um in den plot ein convolutional layer GEWICHTE. Jetzt versuche ich, zu visualisieren, convolutional layer-Ausgang mit K.function
Methode, aber ich bekomme immer Fehler.
Ist hier, was möchte ich jetzt tun:
input_image = X_train[2:3,:,:,:]
output_layer = model.layers[1].output
input_layer = model.layers[0].input
output_fn = K.function(input_layer, output_layer)
output_image = output_fn.predict(input_image)
print(output_image.shape)
output_image = np.rollaxis(np.rollaxis(output_image, 3, 1), 3, 1)
print(output_image.shape)
fig = plt.figure()
for i in range(32):
ax = fig.add_subplot(4,8,i+1)
im = ax.imshow(output_image[0,:,:,i], cmap="Greys")
plt.xticks(np.array([]))
plt.yticks(np.array([]))
fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([1, 0.1, 0.05 ,0.8])
fig.colorbar(im, cax = cbar_ax)
plt.tight_layout()
plt.show()
Und das ist, was ich bekomme:
File "/home/kinshiryuu/anaconda3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 1621, in function
return Function(inputs, outputs, updates=updates)
File "/home/kinshiryuu/anaconda3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 1569, in __init__
raise TypeError('`inputs` to a TensorFlow backend function '
TypeError: `inputs` to a TensorFlow backend function should be a list or tuple.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie die folgenden änderungen:
K.function
nimmt die input-und output-Tensoren als Liste, so dass Sie können eine Funktion erstellen, die aus vielen Eingangs-zu viele-Ausgang. In Ihrem Fall von einem Eingang auf einen Ausgang.. aber du musst Sie so eine Liste nicht weniger.Nächsten
K.function
gibt ein tensor-Funktion und nicht ein model-Objekt, wo Sie verwenden könnenpredict()
. Die richtige Art der Verwendung ist nur zu nennen, als eine FunktionDenke ich, kann man auch verwenden, K.-Funktion, um Verläufe.
was im Grunde verläuft der graph zu erhalten, der Q-Wert zu berechnen, der die Steigung der Q-Wert-w.r.t. action-Vektor in DDPG. Source-code hier (Zeilen 64 bis 70): https://github.com/nyck33/autonomous_quadcopter/blob/master/criticSolution.py#L65
Im Licht der akzeptierten Antworten und diese Nutzung hier (Zitat von Projekt 5 autonome quadcopter in der Udacity Deep Learning nanodegree), eine Frage bleibt in meinem Kopf, dh. ist
K.function()
etwas, das verwendet werden kann, ziemlich flexibel zu laufen, die Grafik und zu benennen, die als Ausgänge derK.function()
zum Beispiel die Ausgänge von einer bestimmten Schicht, die Steigungen oder sogar GEWICHTE selbst?Zeilen 64 bis 67 hier: https://github.com/nyck33/autonomous_quadcopter/blob/master/actorSolution.py
Verwendet wird, wie eine benutzerdefinierte Trainings-Funktion für den Akteur-Netzwerk-in DDPG:
outputs
Wert eine leere Liste, weil wir nur trainieren wollen die Akteur-Netzwerk mit der action_gradients von der Kritiker-Netzwerk.