cnnモデルをトレーニングした後、体重を視覚化したり、体重を印刷したりしたいのですが、何ができますか? トレーニング後に変数を印刷することさえできません。 ありがとうございました!重みを視覚化するTensorflowでcnnの重み(変数)をどのように視覚化できますか?
答えて
、あなたは、要約プロトに畳み込みフィルタ(またはフィルタのスライス)を変換するためにtf.image_summary()
オペアンプを使用tf.train.SummaryWriter
を使用してログにそれらを書き、TensorBoardを使用してログを可視化することができます。
のは、次の(簡体字)のプログラムがあるとしましょう:
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)
これを実行した後、あなたは/tmp/logs
でログを視覚化するTensorBoardを開始することができ、あなたは、フィルタの可視化を見ることができます。
このトリックは、深さ3のフィルタを(入力画像のチャンネルと一致するように)RGB画像として視覚化することに注意してください。より深いフィルタがある場合、またはカラーチャンネルとして解釈する意味がない場合は、tf.split()
オペレーションを使用して、奥行き寸法でフィルタを分割し、深度ごとに1つの画像サマリを生成することができます。
私はそれを印刷したいのですが? name_scope ike "conv1"で変数に到達するにはどうしたらいいですか? – Wuchen
変数を出力したいだけなら、 'tf.Variable'オブジェクトを' sess.run() 'に渡すことができ、それは重みを含むnumpy配列を返します。 – mrry
@ Wuchen scope_convとしてtf.variable_scope( 'conv1')を使用してスコープ "conv1"の下に変数 "weight"を取得する方法は次のとおりです:weights = tf.get_variable( 'weights') – etoropov
@mrryと同様に、tf.image_summary
を使用できます。たとえば、cifar10_train.py
の場合は、このコードをdef train()
のどこかに置くことができます。あなたは1つの素敵なグリッド内のすべてのあなたのconv1
フィルタを視覚化したい場合は、スコープ「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)
下VARへのアクセス方法に注意してください、あなたはグリッド自身にそれらを整理する必要があります。私は今、私はあなたがnumpyの配列として、次のように値を抽出することができますgist for visualizing conv1 as a grid
私のために働きなさい!ありがとう – Tanvir
チャンネルが16の場合、それを視覚化する方法? – raptoravis
@raptoravisデフォルトの方法はなく、あまり意味がありません。私はこれが最初の層のためではないと推測しています。もし私がそれをやりたいのであれば、回答の要点を変更して1つのチャンネル(グレースケール)ごとに16グリッドを表示してください – etoropov
を共有したいと思い、今日のことをやった:あなたはスコープを調整する必要が
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)
注(私の中'conv1'
ケース)と変数名(私のケースでは'weights'
)。
次に、numpy配列の可視化に沸騰します。 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)
私はpython 3でoutfile: '(注記b)として' open( "conv1.weights.npz"、 "wb")を使用しなければなりませんでした。 – mimoralea
- 1. オーディオデータをどのように視覚化できますか?
- 2. どのようにFlex/FlashでXMLを視覚化できますか?
- 3. 階層データをどのように視覚化できますか?
- 4. SQLite&Linq - .dbmlファイルをどのように視覚的にデザインできますか?
- 5. Googleの視覚化API - 積み重ね棒グラフ - カスタムツールチップ
- 6. 畳み込みニューラルネットワーク(CNN)でバックプロパゲーションがどのように機能しますか?
- 7. IPアドレスがPythonで変更されるとどのように視覚化するのですか?
- 8. アルゴリズムのコードを変更せずにアルゴリズムを視覚化するにはどうすればよいですか?
- 9. 視覚化:最善のアプローチですか?
- 10. softmaxレイヤーの後にTensorflow CNNを整数に読み取る方法は?
- 11. crontabエントリを視覚化できるツールはありますか?
- 12. データ視覚化コンソールでスカラ?
- 13. ボタンのクリックによる視覚的な状態の変化
- 14. Numpy:numpy.rollと同等ですが、データの視覚化にのみ使用します
- 15. Google視覚化の複数行ヘッダー
- 16. Androidでのリアルタイムデータの視覚化
- 17. ウェブページでのビッググラフの視覚化:networkx、vivagraph
- 18. matplotalibの対数スケールで値を視覚化する方法は?
- 19. VTK/paraviewによる3D視覚化
- 20. R igraphパッケージによるデータ視覚化
- 21. Googleカレンダーでデータを視覚化する
- 22. PHP変数(リンク)をどのように暗号化できますか?
- 23. iPhoneでオーディオ波形の視覚化
- 24. C++での3D視覚化リアルタイム
- 25. jQueryの読み込み - Googleの視覚化のページ
- 26. 視覚化データR
- 27. データ視覚化フレームワーク
- 28. ファイルの内容をイメージとして視覚化するにはどうすればよいですか?
- 29. デバッグ中にVisual Studio 2010でGraphics変数の内容を視覚化する方法はありますか?
- 30. 視覚化オブジェクトのプロパティ
で、tensorboard例を見てみましょう:https://github.com/tensorflow/tensorflow/issues/225 – Blaze
も参照してください:[tensorflowコンボリューションフィルタを可視化することができますどのように?](http://stackoverflow.com/q/39361943/562769) –