python深度学习tensorflow1.0参数和特征提取

 更新时间:2022年06月29日 16:41:01   作者:denny402  
这篇文章主要为大家介绍了python深度学习tensorflow1.0参数和特征提取,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

tf.trainable_variables()提取训练参数

在tf中,参与训练的参数可用 tf.trainable_variables()提取出来,如:

#取出所有参与训练的参数
params=tf.trainable_variables()
print("Trainable variables:------------------------")
#循环列出参数
for idx, v in enumerate(params):
     print("  param {:3}: {:15}   {}".format(idx, str(v.get_shape()), v.name))

这里只能查看参数的shape和name,并没有具体的值。如果要查看参数具体的值的话,必须先初始化,即:

sess=tf.Session()
sess.run(tf.global_variables_initializer())

同理,我们也可以提取图片经过训练后的值。图片经过卷积后变成了特征,要提取这些特征,必须先把图片feed进去。

具体实例

# -*- 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
#-----------------构建网络----------------------
#占位符
x=tf.placeholder(tf.float32,shape=[None,100,100,3],name='x')
y_=tf.placeholder(tf.int32,shape=[None,],name='y_')
#第一个卷积层(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)
#第二个卷积层(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)
#第三个卷积层(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)
#第四个卷积层(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)
#---------------------------网络结束---------------------------
#%%
#取出所有参与训练的参数
params=tf.trainable_variables()
print("Trainable variables:------------------------")
#循环列出参数
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()) 
#提取最后一个全连接层的参数 W和b
W=sess.run(params[26])
b=sess.run(params[27])
#提取第二个全连接层的输出值作为特征    
fea=sess.run(dense2,feed_dict={x:img})

最后一条语句就是提取某层的数据输出作为特征。

注意:这个程序并没有经过训练,因此提取出的参数只是初始化的参数。

以上就是python深度学习tensorflow1.0参数和特征提取的详细内容,更多关于python tensorflow参数特征提取的资料请关注脚本之家其它相关文章!

相关文章

  • python编程实现12306的一个小爬虫实例

    python编程实现12306的一个小爬虫实例

    这篇文章主要介绍了python编程实现12306的一个小爬虫实例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Python实现列表索引批量删除的5种方法

    Python实现列表索引批量删除的5种方法

    这篇文章主要介绍了Python实现列表索引批量删除的5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Pycharm中新添加或者导入项目文件名红色的解决方法

    Pycharm中新添加或者导入项目文件名红色的解决方法

    Pycharm的代码中添加新的文件夹,发现文件夹下的文件名是红色的,遇到这样的问题如何解决呢,下面小编给大家带来了Pycharm中新添加或者导入项目文件名红色的解决方法,感兴趣的朋友一起看看吧
    2023-12-12
  • freeswitch开源通信 python模块介绍

    freeswitch开源通信 python模块介绍

    freeswitch支持多种语言的业务开发,包括C/C++,java,python,js,lua,Golang等等。freeswitch在使用python做业务开发时,有俩种接入方式,一种是ESL接口,另一种是mod_python模块。本文主要介绍的是fs内部的mod_python语言支持模块,需要的朋友可以参考下面文章内容
    2021-09-09
  • Python的Django框架中URLconf相关的一些技巧整理

    Python的Django框架中URLconf相关的一些技巧整理

    这篇文章主要介绍了Python的Django框架中URLconf相关的一些技巧整理,包括视图配置和debug的示例等,需要的朋友可以参考下
    2015-07-07
  • PyTorch中的squeeze()和unsqueeze()解析与应用案例

    PyTorch中的squeeze()和unsqueeze()解析与应用案例

    这篇文章主要介绍了PyTorch中的squeeze()和unsqueeze()解析与应用案例,文章内容介绍详细,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-03-03
  • Python实现自动签到脚本功能

    Python实现自动签到脚本功能

    这篇文章主要介绍了Python实现自动签到脚本,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • python文件读取失败怎么处理

    python文件读取失败怎么处理

    在本篇文章里小编给大家分享的是关于python文件读取失败怎么处理的相关文章,需要的朋友们参考下。
    2020-06-06
  • python 批量修改/替换数据的实例

    python 批量修改/替换数据的实例

    今天小编就为大家分享一篇python 批量修改/替换数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 跟老齐学Python之集合的关系

    跟老齐学Python之集合的关系

    前面一节讲述了集合的基本概念,注意,那里所涉及到的集合都是可原处修改的集合。还有一种集合,不能在原处修改。
    2014-09-09

最新评论