Tensorflow 常用小方法汇总(持续更新)

                    Tensorflow 常用小方法汇总(持续更新)

1.tf.clip_by_value(v,a,b) :

功能:可以将一个张量中的数值限制在一个范围之内
 
import tensorflow as tf
array = tf.constant([[1.1,2.1,3.1],[4.1,5.1,6.1]])#必须为float
with tf.Session() as sess:
    print(tf.clip_by_value(array,2.5,4.5).eval())#[[2.5 2.5 3.1],[4.1 4.5 4.5]]

2.tf.nn.embedding_lookup: 

import tensorflow as tf;  
import numpy as np;  
  
c = np.random.random([10,1])  
b = tf.nn.embedding_lookup(c, [1, 3])  
  
with tf.Session() as sess:  
    sess.run(tf.initialize_all_variables())  
    print sess.run(b)  
    print c  
#[[ 0.77505197],[ 0.20635818]]
#[[ 0.23976515], [ 0.77505197], [ 0.08798201], [ 0.20635818], [ 0.37183035], [ 0.24753178], [ 0.17718483], [ 0.38533808], [ 0.93345168], [ 0.02634772]]
import tensorflow as tf
import numpy as np

sess = tf.InteractiveSession()

embedding = tf.Variable(np.identity(5,dtype=np.int32))
input_ids = tf.placeholder(dtype=tf.int32,shape=[None])
input_embedding = tf.nn.embedding_lookup(embedding,input_ids)

sess.run(tf.initialize_all_variables())
print(sess.run(embedding))
#[[1 0 0 0 0]
# [0 1 0 0 0]
# [0 0 1 0 0]
# [0 0 0 1 0]
# [0 0 0 0 1]]
print(sess.run(input_embedding,feed_dict={input_ids:[1,2,3,0,3,2,1]}))
#[[0 1 0 0 0]
# [0 0 1 0 0]
# [0 0 0 1 0]
# [1 0 0 0 0]
# [0 0 0 1 0]
# [0 0 1 0 0]
# [0 1 0 0 0]]


3.tf.get_variable()和tf.Variable():

tf.get_variable()和tf.Variable()最大的区别在于指定变量名称的参数。tf.Variable()的变量名称是一个可选参数,通过name = ” 给出,但是tf.get_variable()的变量名称是一个必填参数。如果tf.get_variable()获取一个已经创建的变量,需要通过tf.variable_scope()函数生成一个上下文管理器,并明确指定tf.get_variable()将直接获取已经生成的变量。
import tensorflow as tf
#获取变量的方式主要有以下两种,实践中tf.get_variable产生的变量一定要搭配tf.variable_scope使用,不然运行脚本会报错
v = tf.get_variable('v',shape= [1],initializer = tf.constant_initializer(1.0))
#使用直接定义变量不会报错,可以一直调用
vc = tf.Variable(tf.constant(1.0,shape = [1]),name = 'v')
print(vc)
#以下使用with语法,将tf.get_variable与tf.variable_scope搭配使用,且reuse=True时,之前必须定义V
with tf.variable_scope('',reuse = True):
    v = tf.get_variable('v',shape= [1],initializer = tf.constant_initializer(1.0))
    print(v)
    v1 = tf.get_variable('v',shape= [1],initializer = tf.constant_initializer(1.0))
    print(v1==v)

3.1 tf.get_variable函数调用时提供的维度(shape)信息以及初始化方法(initializer )的参数和tf.Variable函数调用时提供的初始化过程中的参数也类似。TensorFlow提供的initializer 初始化函数和随机数和常量生成函数是一一对应的:tf.constant_initializer:将变量初始化为给定的常量 。tf.random_normal_initializer:将变量初始化为满足正态分布的随机值。 tf.truncated_normal_initializer:将变量初始化为满足正态分布的随机值,但是如果随机值出来的偏离程度超过两个标准差,则重新随机。 tf.random_uniform_initializer:将变量初始化为满足平均分布的随机值 。tf.zeros_initializer:将变量全设置为0 tf.ones_initializer:将变量全设置为1。

通过tf.variable_scope函数可以控制tf.get_variable函数的语义。当reuse = True时,这个上下文管理器内所有的tf.get_variable都会直接获取已经创建的变量。如果变量不存在,则会报错。相反,如果reuse = None或者reuse = False,tf.get_variable将创建新的变量,,若同名的变量已经存在则报错。

import tensorflow  as tf
with tf.variable_scope('root'):
    #通过tf.get_variable_scope().reuse来获取reuse参数的取值
    print(tf.get_variable_scope().reuse) #False
    with tf.variable_scope('foo',reuse= True):
		#tf.get_variable_scope().reuse_variables()设置reuse为true
        print(tf.get_variable_scope().reuse) #True
        with tf.variable_scope('bar'):
            print(tf.get_variable_scope().reuse) #True,不指定reuse时,这个取值和上面一层保持一致。
    print(tf.get_variable_scope().reuse) #False,退出reuse设置为True的上下文之后,又变为false


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值