python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取
tf.trainable_variables()提取訓(xùn)練參數(shù)
在tf中,參與訓(xùn)練的參數(shù)可用 tf.trainable_variables()提取出來(lái),如:
#取出所有參與訓(xùn)練的參數(shù)
params=tf.trainable_variables()
print("Trainable variables:------------------------")
#循環(huán)列出參數(shù)
for idx, v in enumerate(params):
print(" param {:3}: {:15} {}".format(idx, str(v.get_shape()), v.name))這里只能查看參數(shù)的shape和name,并沒有具體的值。如果要查看參數(shù)具體的值的話,必須先初始化,即:
sess=tf.Session() sess.run(tf.global_variables_initializer())
同理,我們也可以提取圖片經(jīng)過(guò)訓(xùn)練后的值。圖片經(jīng)過(guò)卷積后變成了特征,要提取這些特征,必須先把圖片feed進(jìn)去。
具體實(shí)例
# -*- coding: utf-8 -*-
"""
Created on Sat Jun 3 12:07:59 2017
@author: Administrator
"""
import tensorflow as tf
from skimage import io,transform
import numpy as np
#-----------------構(gòu)建網(wǎng)絡(luò)----------------------
#占位符
x=tf.placeholder(tf.float32,shape=[None,100,100,3],name='x')
y_=tf.placeholder(tf.int32,shape=[None,],name='y_')
#第一個(gè)卷積層(100——>50)
conv1=tf.layers.conv2d(
inputs=x,
filters=32,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01))
pool1=tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)
#第二個(gè)卷積層(50->25)
conv2=tf.layers.conv2d(
inputs=pool1,
filters=64,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01))
pool2=tf.layers.max_pooling2d(inputs=conv2, pool_size=[2, 2], strides=2)
#第三個(gè)卷積層(25->12)
conv3=tf.layers.conv2d(
inputs=pool2,
filters=128,
kernel_size=[3, 3],
padding="same",
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01))
pool3=tf.layers.max_pooling2d(inputs=conv3, pool_size=[2, 2], strides=2)
#第四個(gè)卷積層(12->6)
conv4=tf.layers.conv2d(
inputs=pool3,
filters=128,
kernel_size=[3, 3],
padding="same",
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01))
pool4=tf.layers.max_pooling2d(inputs=conv4, pool_size=[2, 2], strides=2)
re1 = tf.reshape(pool4, [-1, 6 * 6 * 128])
#全連接層
dense1 = tf.layers.dense(inputs=re1,
units=1024,
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01),
kernel_regularizer=tf.nn.l2_loss)
dense2= tf.layers.dense(inputs=dense1,
units=512,
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01),
kernel_regularizer=tf.nn.l2_loss)
logits= tf.layers.dense(inputs=dense2,
units=5,
activation=None,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01),
kernel_regularizer=tf.nn.l2_loss)
#---------------------------網(wǎng)絡(luò)結(jié)束---------------------------
#%%
#取出所有參與訓(xùn)練的參數(shù)
params=tf.trainable_variables()
print("Trainable variables:------------------------")
#循環(huán)列出參數(shù)
for idx, v in enumerate(params):
print(" param {:3}: {:15} {}".format(idx, str(v.get_shape()), v.name))
#%%
#讀取圖片
img=io.imread('d:/cat.jpg')
#resize成100*100
img=transform.resize(img,(100,100))
#三維變四維(100,100,3)-->(1,100,100,3)
img=img[np.newaxis,:,:,:]
img=np.asarray(img,np.float32)
sess=tf.Session()
sess.run(tf.global_variables_initializer())
#提取最后一個(gè)全連接層的參數(shù) W和b
W=sess.run(params[26])
b=sess.run(params[27])
#提取第二個(gè)全連接層的輸出值作為特征
fea=sess.run(dense2,feed_dict={x:img})最后一條語(yǔ)句就是提取某層的數(shù)據(jù)輸出作為特征。
注意:這個(gè)程序并沒有經(jīng)過(guò)訓(xùn)練,因此提取出的參數(shù)只是初始化的參數(shù)。
以上就是python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取的詳細(xì)內(nèi)容,更多關(guān)于python tensorflow參數(shù)特征提取的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- python深度學(xué)習(xí)tensorflow實(shí)例數(shù)據(jù)下載與讀取
- 使用Python、TensorFlow和Keras來(lái)進(jìn)行垃圾分類的操作方法
- Python基于TensorFlow接口實(shí)現(xiàn)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)回歸
- Python基于Tensorflow2.X實(shí)現(xiàn)汽車油耗預(yù)測(cè)
- Python tensorflow與pytorch的浮點(diǎn)運(yùn)算數(shù)如何計(jì)算
- python深度學(xué)習(xí)tensorflow訓(xùn)練好的模型進(jìn)行圖像分類
- python如何下載指定版本TensorFlow
相關(guān)文章
python編程實(shí)現(xiàn)12306的一個(gè)小爬蟲實(shí)例
這篇文章主要介紹了python編程實(shí)現(xiàn)12306的一個(gè)小爬蟲實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Python實(shí)現(xiàn)列表索引批量刪除的5種方法
這篇文章主要介紹了Python實(shí)現(xiàn)列表索引批量刪除的5種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Pycharm中新添加或者導(dǎo)入項(xiàng)目文件名紅色的解決方法
Pycharm的代碼中添加新的文件夾,發(fā)現(xiàn)文件夾下的文件名是紅色的,遇到這樣的問(wèn)題如何解決呢,下面小編給大家?guī)?lái)了Pycharm中新添加或者導(dǎo)入項(xiàng)目文件名紅色的解決方法,感興趣的朋友一起看看吧2023-12-12
Python的Django框架中URLconf相關(guān)的一些技巧整理
這篇文章主要介紹了Python的Django框架中URLconf相關(guān)的一些技巧整理,包括視圖配置和debug的示例等,需要的朋友可以參考下2015-07-07
PyTorch中的squeeze()和unsqueeze()解析與應(yīng)用案例
這篇文章主要介紹了PyTorch中的squeeze()和unsqueeze()解析與應(yīng)用案例,文章內(nèi)容介紹詳細(xì),需要的小伙伴可以參考一下,希望對(duì)你有所幫助2022-03-03
Python實(shí)現(xiàn)自動(dòng)簽到腳本功能
這篇文章主要介紹了Python實(shí)現(xiàn)自動(dòng)簽到腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
python 批量修改/替換數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇python 批量修改/替換數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07

