Dopo l'allenamento del modello cnn, voglio visualizzare il peso o stampare i pesi, cosa posso fare? Non riesco nemmeno a stampare le variabili dopo l'allenamento. Grazie!Come posso visualizzare i pesi (variabili) in cnn in Tensorflow?
risposta
di visualizzare i pesi, è possibile utilizzare un tf.image_summary()
op per trasformare un filtro convoluzionale (o una fetta di un filtro) in un proto sintesi, la scrive su un registro utilizzando un tf.train.SummaryWriter
, e visualizzare il registro utilizzando TensorBoard.
Diciamo che avete il seguente programma (semplificato):
filter = tf.Variable(tf.truncated_normal([8, 8, 3]))
images = tf.placeholder(tf.float32, shape=[None, 28, 28])
conv = tf.nn.conv2d(images, filter, strides=[1, 1, 1, 1], padding="SAME")
# More ops...
loss = ...
optimizer = tf.GradientDescentOptimizer(0.01)
train_op = optimizer.minimize(loss)
filter_summary = tf.image_summary(filter)
sess = tf.Session()
summary_writer = tf.train.SummaryWriter('/tmp/logs', sess.graph_def)
for i in range(10000):
sess.run(train_op)
if i % 10 == 0:
# Log a summary every 10 steps.
summary_writer.add_summary(filter_summary, i)
Dopo aver fatto questo, si può iniziare TensorBoard di visualizzare i log in /tmp/logs
, e sarete in grado di vedere una visualizzazione del filtro.
Si noti che questo trucco visualizza i filtri di profondità 3 come immagini RGB (per abbinare i canali dell'immagine di input). Se hai filtri più profondi o non hanno senso interpretarli come canali di colore, puoi usare l'op tf.split()
per dividere il filtro sulla dimensione di profondità e generare un riassunto di immagine per profondità.
Cosa succede se voglio solo stamparlo? Come posso raggiungere una variabile con name_scope ike "conv1" il cui nome è 'weight'? – Wuchen
Se si desidera stampare la variabile, è possibile passare l'oggetto 'tf.Variable' a' sess.run() 'e restituirà una matrice numerica contenente i pesi. – mrry
@ Wuchen Ecco come ottenere una variabile "weight" nell'ambito scope "conv1" - con tf.variable_scope ('conv1') come scope_conv: weights = tf.get_variable ('weights') – etoropov
Come @mrry ha detto, è possibile utilizzare tf.image_summary
. Ad esempio, per cifar10_train.py
, è possibile inserire questo codice da qualche parte sotto def train()
. Si noti come si accede a un var in ambito 'CONV1'
# Visualize conv1 features
with tf.variable_scope('conv1') as scope_conv:
weights = tf.get_variable('weights')
# scale weights to [0 255] and convert to uint8 (maybe change scaling?)
x_min = tf.reduce_min(weights)
x_max = tf.reduce_max(weights)
weights_0_to_1 = (weights - x_min)/(x_max - x_min)
weights_0_to_255_uint8 = tf.image.convert_image_dtype (weights_0_to_1, dtype=tf.uint8)
# to tf.image_summary format [batch_size, height, width, channels]
weights_transposed = tf.transpose (weights_0_to_255_uint8, [3, 0, 1, 2])
# this will display random 3 filters from the 64 in conv1
tf.image_summary('conv1/filters', weights_transposed, max_images=3)
Se si desidera visualizzare tutti i tuoi conv1
filtri in una bella griglia, che avrebbe dovuto organizzarli in una griglia da soli. Ho fatto che oggi, così ora mi piacerebbe condividere un gist for visualizing conv1 as a grid
Funziona per me! Grazie – Tanvir
se i canali sono 16, come fare per visualizzarli? – raptoravis
@raptoravis Non esiste un modo predefinito e non ha molto senso. Immagino che questo non sia per il primo livello.Se volessi farlo, modificherei la sostanza nella risposta per visualizzare 16 griglie, ciascuna per 1 canale (scala di grigi) – etoropov
È possibile estrarre i valori come array numpy seguente modo:
with tf.variable_scope('conv1', reuse=True) as scope_conv:
W_conv1 = tf.get_variable('weights', shape=[5, 5, 1, 32])
weights = W_conv1.eval()
with open("conv1.weights.npz", "w") as outfile:
np.save(outfile, weights)
Si noti che è necessario regolare la portata ('conv1'
nel mio caso) e il nome della variabile ('weights'
nel mio caso).
Quindi si riduce a visualizzare gli array numpy. Un esempio come visualizzare le matrici NumPy è
#!/usr/bin/env python
"""Visualize numpy arrays."""
import numpy as np
import scipy.misc
arr = np.load('conv1.weights.npb')
# Get each 5x5 filter from the 5x5x1x32 array
for filter_ in range(arr.shape[3]):
# Get the 5x5x1 filter:
extracted_filter = arr[:, :, :, filter_]
# Get rid of the last dimension (hence get 5x5):
extracted_filter = np.squeeze(extracted_filter)
# display the filter (might be very small - you can resize the window)
scipy.misc.imshow(extracted_filter)
Ho dovuto usare 'con open (" conv1.weights.npz "," wb ") come outfile:' (nota la b) con python 3. – mimoralea
- 1. Come visualizzare i filtri appresi su tensorflow
- 2. Estrarre le funzionalità utilizzando CNN pre-addestrato (Tensorflow)
- 3. Come testare il modello tutorial di tensorflow cifar10 cnn
- 4. Come posso visualizzare i dati in memcache?
- 5. Tensorflow - Python: come posso utilizzare i miei dati con TensorFlow?
- 6. Come visualizzare i valori delle variabili in KDevelop?
- 7. Come leggere i dati in Tensorflow?
- 8. Come evitare i pesi nidificati?
- 9. Perché denominiamo le variabili in Tensorflow?
- 10. TensorFlow - regolarizzazione con perdita L2, come applicare a tutti i pesi, non solo all'ultimo?
- 11. Come posso copiare una variabile in tensorflow
- 12. ReLu e dropout in CNN
- 13. tensorflow costante con dimensioni variabili
- 14. Come posso modificare la forma di una variabile in TensorFlow?
- 15. Come ottenere i pesi dei font disponibili?
- 16. Istogramma con pesi in R
- 17. Ottenere il valore di alcuni pesi in un modello addestrato da TensorFlow
- 18. Regolarizzazione per LSTM in tensorflow
- 19. Come posso visualizzare i caratteri ASCII estesi in Perl?
- 20. Come posso visualizzare correttamente il carattere in tutti i browser?
- 21. Come posso visualizzare i log di traccia .NET in TeamCity?
- 22. Come posso visualizzare tutti i valori possibili in un SuggestBox
- 23. Come espandere una variabile di Tensorflow
- 24. Come visualizzare le variabili nella finestra Taglist in vim
- 25. Come posso visualizzare i dati gerarchici?
- 26. Come posso visualizzare tutte le variabili salvate localStorage?
- 27. Normalizzazione batch in tensorflow
- 28. Come visualizzare le variabili statiche o globali in Eclipse CDT?
- 29. Come utilizzare i gradienti SVG per visualizzare i colori variabili in relazione alle dimensioni dell'area colorata
- 30. tensorflow: Ripristino variabili da da più punti di controllo
Inoltre, date un'occhiata all'esempio tensorboard: https://github.com/tensorflow/tensorflow/issues/225 – Blaze
Vedere anche: [Come può visualizzare filtri di convoluzione tensorflow ?] (http://stackoverflow.com/q/39361943/562769) –