tensorflow参数特征提取的方法及具体代码是什么
Admin 2022-08-05 群英技术资讯 680 次浏览
在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})
最后一条语句就是提取某层的数据输出作为特征。
注意:这个程序并没有经过训练,因此提取出的参数只是初始化的参数。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
图像标注在计算机视觉中很重要,计算机视觉是一种技术,它允许计算机从数字图像或视频中获得高水平的理解力,并以人类的方式观察和解释视觉信息,本文将重点讨论在OpenCV的帮助下创建这些注释,感兴趣的朋友一起看看吧
适合自动化运维编程语言特点是什么?要具备丰富的第三方库、学习成本低、跨平台、轻量级这几点
python必选参数是什么意思。函数的必选参数,指的是函数调用的时候必须传入的参数
python列表的增删操作怎样实现?对列表做增删操作是比较常见的需求,也是很基础的内容,对此这篇文章就给大家分享一些python列表的增删操作的实例,感兴趣的朋友可以参考。
这篇文章主要介绍了Numpy中的ravel_multi_index函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008