tensorflow如何可視化feature map(無法在直接在服務器上可視化,先存儲到本地再在其他地方可視化)

1、

寫作本文受一下兩篇文章啓發:

http://baijiahao.baidu.com/s?id=1604877144040331406&wfr=spider&for=pc,介紹tensorflow的計算圖和計算節點、會話;

https://blog.csdn.net/missayaaa/article/details/80251823,講解了可視化一隻貓在VGG-19中各層的feature map的可視化。

其實主要思想就兩條:圖像經過卷積層/激活層/池化層的計算後會有圖像的feature map,就是計算值,第一條就是把每一層計算出來的feature map與對應的層名對應起來存到一個“層名—feature map”字典中(把feature map 值固定下來存儲爲np.array數組);第二步就是利用plt工具把每一層的feature map值顯示出來。

這裏面有幾個細節,首先是得到你想要的那個層的feature map,因爲tensorflow中的數據是“張量”,tensor,不是直接可以打印出來的,得先建立會話,把運算運行起來才能得到值,否則你得到的就只是節點的指針;建立會話後通過tensor.eval()方法獲取feature map的值,如果不能直接在桌面上顯示出來(比如在服務器上運行一般是沒法顯示圖片的,或者沒有權限,悲催的我就是。。)就需要把feature map的值存下來並拷貝到Windows電腦上做進一步的可視化工作,其實代碼和第二個鏈接中差不多。

如何把tensor轉換爲numpy.array? 可以通過sess.run(tensor)或tensor.eval()方法,具體參見:https://vimsky.com/article/3725.html

注意把裏面的type()函數去掉就顯示原數值啦~



2、讀取寫入HDF5文件:

import h5py  #導入工具包  
import numpy as np  
#HDF5的寫入:  
imgData = np.zeros((30,3,128,256))  
f = h5py.File('HDF5_FILE.h5','w')   #創建一個h5文件,文件指針是f  
f['data'] = imgData                 #將數據寫入文件的主鍵data下面  
f['labels'] = range(100)            #將數據寫入文件的主鍵labels下面  
f.close()                           #關閉文件  

#HDF5的讀取:  
f = h5py.File('HDF5_FILE.h5','r')   #打開h5文件  
f.keys()                            #可以查看所有的主鍵  
a = f['data'][:]                    #取出主鍵爲data的所有的鍵值  
f.close() 

舉後面的例子主要是說使用 with ... as ...: 語法可以自動管理文件的空間釋放,以免忘了使用f.close()關閉文件:

或者:

# -*- coding: utf-8 -*-
import h5py  # 導入工具包
import numpy as np
 
# HDF5的寫入:
imgData = np.zeros((30, 3))
with h5py.File('HDF5_FILE.h5', 'w') as f:
    f['data'] = imgData  # 將數據寫入文件的主鍵data下面
    f['labels'] = range(100)  # 將數據寫入文件的主鍵labels下面
    # f.close()  # 關閉文件
print '*.h5 Created.

或者:
# -*- coding: utf-8 -*-
import h5py  # 導入工具包
import numpy as np
 
# HDF5的寫入:
imgData = np.zeros((30, 3))
with h5py.File('HDF5_FILE.h5', 'w') as f:
    f.create_dataset('data', data=imgData)
    f.create_dataset('labels', data=range(100))
 
    # f.close()  # 關閉文件

讀取文件:
# -*- coding: utf-8 -*-
import h5py  # 導入工具包
import numpy as np
 
# HDF5的讀取:
with h5py.File('HDF5_FILE.h5', 'r') as f:
    for item in f.keys():
        print 'main key is: {}'.format(item)
        content = f[item][:]
        print 'key value of {0} is: {1}'.format(item,content)
        # f.close()

3、GAN網絡的插值方法:

總體思想是如果可以通過噪聲z1經過G生成G(z1),噪聲z2經過G可以生成G(z2),那麼如果把z1、z2分別同樣等分,如果一點一點用z1的部分替換z2的部分看看生成的東西會怎麼變?目的主要是看網絡是“死記硬背”還是學到了真實數據的分佈。

詳見:https://blog.csdn.net/qq_27261889/article/details/86477447

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章