神經網路 權重視覺化

2021-08-18 22:08:19 字數 2138 閱讀 8234

深度學習已經應用在各種不同的領域,並且都取得了不錯的效果,但是在很多情況下,深度學習網路被我們看做乙個黑匣子,我們不知道通過訓練,我們的網路到底學習到了什麼。今天給大家分享乙個簡單的權重視覺化的方法,在我們訓練完網路之後,可以通過權重視覺化,直觀的理解網路到底學習到了什麼。本次實驗基於mnist資料集,通過建立乙個兩層的神經網路,採用softmax對資料集進行分類。訓練完成之後,就可以看到網路的權重分布了。

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

import pylab

import tensorflow.examples.tutorials.mnist.input_data as input_data

mnist = input_data.read_data_sets("mnist_data/", one_hot=true)

x = tf.placeholder(tf.float32, [none, 784])

y_actual = tf.placeholder(tf.float32, shape=[none, 10])

w1 = tf.variable(tf.random_normal([784,10])) #初始化權值w

b1 = tf.variable(tf.random_normal([10])) #初始化偏置項b

layer1=tf.nn.sigmoid(tf.matmul(x,w1) + b1)

y_predict = tf.nn.softmax(layer1) #加權變換並進行softmax回歸,得到**概率

regularizer=tf.contrib.layers.l2_regularizer(0.05)

regloss=regularizer(w1)

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_actual*tf.log(y_predict),reduction_indices=1)) #損失函式為交叉熵

totalloss=cross_entropy+regloss

train_step = tf.train.gradientdescentoptimizer(0.2).minimize(totalloss) #用梯度下降法使得殘差最小

correct_prediction = tf.equal(tf.argmax(y_predict,1), tf.argmax(y_actual,1)) #在測試階段,測試準確度計算

accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) #多個批次的準確度均值

init = tf.initialize_all_variables()

with tf.session() as sess:

sess.run(init)

for i in range(10000): #訓練階段,迭代10000次

batch_xs, batch_ys = mnist.train.next_batch(100) #按批次訓練,每批100行資料

sess.run(train_step, feed_dict=) #執行訓練

if(i%1000==0): #每訓練1000次,測試一次

print ("accuracy:",sess.run(accuracy, feed_dict=))

w_1=w1.eval() # 把權重矩陣儲存成array,array.shape=(784,10)

for i in range(10): # 繪製10個隱層神經元與輸入層神經元個之間的權重

im=w_1[:,i].reshape(28,28) #把矩陣的每一列 變化層 28*28 的矩陣

plt.imshow(im) #繪圖

plt.show()

結果圖如下:

以上為10個節點的權重視覺化結果,我們大概可以看出神經網路的權重已經學習到了對應數字的輪廓。

由於上述實驗結果訓練輪數比較少,當訓練輪數增加時,權重視覺化的效果會變得更加清晰。

神經網路特徵視覺化

1.visualizing higher layer features of a deep network 本文提出了兩種視覺化方法。1.最大化activation 當訓練完乙個深層神經網路之後,固定全部引數。然後對於某乙個神經元的activation進行梯度上公升優化來尋找能使它的值最大化的inp...

卷積神經網路的視覺化

2014eccv紐約大學 matthew d.zeiler,rob fergus文章主要技巧 使用視覺化技巧 反卷積網路 deconvnet 來直 到cnn中間層的特徵對應的影象區域,deconvnet在 zeiler et al.2011 中被用作無監督學習,本文則用來進行視覺化演示。一層反卷積網...

tensorboard使用 視覺化神經網路結構

直接解除安裝tensorboard和tensorboard plugin wit pip uninstall tensorboard pip uninstall tensorboard plugin wit 然後重灌tensorboard,注意 這裡自動安裝tensorboard plugin wi...