tensorboard中projector的使用


from tensorflow.contrib.tensorboard.plugins import projector

import cv2

1.首先要定義embedding varibles,也就是你要可視化的數(shù)據(jù),以mnist為例,就是可視化test數(shù)據(jù)集中前2500個數(shù)據(jù)(必要):

show_num=2500

embedding_var = tf.Variable(tf.stack(mnist.test.images[:show_num]), trainable=False, name='embedding_var')

2.然后創(chuàng)建label文件,可以是csv,也可以是tsv文件,下面是我寫的一個函數(shù),same_file是創(chuàng)建文件的位置,labels就是你需要可視化數(shù)據(jù)集中的labels(可選):

def create_metadata_file(same_file, labels):

    with open(file, 'w')as f:

        f.write('Index' +'\t' +'Label' +'\n')

        for i in range(show_num):

            f.write(str(i) +'\t' +str(labels[i]) +'\n')

    print('labels.tsv文件創(chuàng)建完成!')

3.也可以創(chuàng)建sprite.image_data數(shù)據(jù),下面是函數(shù),創(chuàng)建出來的圖片如sprite_image.jpg所示(可選):

def create_sprite_data(same_file, images, show_num, single_image_shape=(28,28)):

    n_plots =int(np.ceil(np.sqrt(show_num)))

    sprite_image = np.zeros([n_plots*single_image_shape[0], n_plots*single_image_shape[1]])

    num =0

    flag =0

    for i in range(n_plots):

        y1 = i*single_image_shape[1]

        y2 = y1 + single_image_shape[1]

            for j in range(n_plots):

                x1 = j*single_image_shape[0]

                x2 = x1 + single_image_shape[0]

                sprite_image[x1:x2, y1:y2] = 1 - images[num].reshape(single_image_shape)

                num +=1

            if num > images.shape[0]:

                flag =1

                break

        if flag:

            break

    cv2.imwrite(file, sprite_image*255)

    print('sprite_image創(chuàng)建完成!')
sprite_image.jpg

4.建立config(必要):

#下面基本是projector的固定操作

config= projector.ProjectorConfig()

embedding =config.embeddings.add()

#將需要可視化的變量與embedding綁定

embedding.tensor_name = embedding_var.name

#指定embedding每個點對應(yīng)的標簽信息

#這個是可選的,沒有指定就沒有標簽信息(所以還是有必要添加的,否則最后可視化的結(jié)果只有一種顏色)

embedding.metadata_path = meta_file

#指定embedding每個點對應(yīng)的圖像

#這個文件也是可選的,沒有指定就顯示一個圓點

embedding.sprite.image_path = sprite_file

#指定sprite圖中單張圖片的大小,下面是mnist中的圖片大小

embedding.sprite.single_image_dim.extend([28,28])

projector.visualize_embeddings(tf.summary.FileWriter(same_file), config)

6.創(chuàng)建saver(必要):

saver= tf.train.Saver(tf.global_variables())

saver.save(sess, same_file)

注:上面的路徑最好放在同一文件夾下,否則可能出現(xiàn)projector可視化圖中不能顯示labels的情況。上面標了(必要)的步驟都是使用該API必須的操作,只需要記住就好了。

最后的結(jié)果可以在tensorboard下面的projector中看到。(因為我主要為了顯示最后的可視化結(jié)果,沒有將模型訓(xùn)練的很好,所以看起來這些個點聚類的并不是那么好?。?/p>

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容