tensorflow函数方法

本文介绍了TensorFlow中的几个重要函数:tf.where用于根据条件选择返回x或y的值;tf.placeholder用于构建计算图时定义输入数据的占位符,便于在会话中通过feed_dict喂入数据;激活函数部分讲解了tf.nn.relu和tf.nn.elu,前者是ReLU函数,后者是ELU函数,引入非线性增强模型表达能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.tf.where(condition,x=None,y=None,name=None)

作用:该函数的作用是根据condition,返回相对应的x或y,返回值是一个tf.bool类型的Tensor。
若condition=True,则返回对应X的值,False则返回对应的Y值。

import tensorflow as tf
sess=tf.Session()
A =tf.where(False,123,321)
print(sess.run(A)) #321

B=tf.where(True,123,321)
print(sess.run(B)) # 123

2.tf.placeholder(dtype,shape=None,name=None)

参数:

  1. dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
  2. shape:数据形状。默认是None,就是一维值,也可以是多维(比如[2,3], [None, 3]表示列是3,行不定)
  3. name:名称

为什么要用placeholder?

  • Tensorflow的设计理念称之为计算流图,在编写程序时,首先构筑整个系统的graph,代码并不会直接生效,这一点和python的其他数值计算库(如Numpy等)不同,graph为静态的。然后,在实际的运行时,启动一个session,程序才会真正的运行。这样做的好处就是:避免反复地切换底层程序实际运行的上下文,tensorflow帮你优化整个系统的代码。我们知道,很多python程序的底层为C语言或者其他语言,执行一行脚本,就要切换一次,是有成本的,tensorflow通过计算流图的方式,帮你优化整个session需要执行的代码,还是很有优势的。
  • 所以placeholder()函数是在神经网络构建graph的时候在模型中的占位,此时并没有把要输入的数据传入模型,它只会分配必要的内存等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据。
import tensorflow as tf
import numpy as np
 
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
 
output = tf.multiply(input1, input2)
 
with tf.Session() as sess:
    print(sess.run(output, feed_dict = {input1:[3.], input2: [4.]}))

激活函数:

激励函数主要是为计算图归一化返回结果而引进的非线性部分。激励函数位于tensorflow的nn库(neural network, nn)。https://www.jianshu.com/p/55a47b1720ba

激活函数定义备注
tf.nn.relu()max(0, x)大于零取原值,小于零取零
tf.nn.elu()在这里插入图片描述大于等于0的值取原值,小于0的值按照公式计算,a取值为1

3.tf.nn.relu(features, name = None)

作用: 计算激活函数relu,即 max(0,features) ,大于零取原值,小于零取零。

import tensorflow as tf
 
a = tf.constant([-1.0, 2.0])
with tf.Session() as sess:
    b = tf.nn.relu(a)
    print sess.run(b) #输出的结果是:[0. 2.]

4.tf.nn.elu(x)

  1. elu函数
    在这里插入图片描述
import tensorflow as tf

input=tf.constant([0,-1,2,-3],dtype=tf.float32)
output=tf.nn.elu(input)

with tf.Session() as sess:
    print(sess.run(input)) #[ 0. -1. 2. -3.]
    print(sess.run(output)) #[ 0. -0.63212055 2. -0.95021296]
    sess.close()

按照公式上面大于等于0的值返回原值,小于0的值按照公式计算:
e = 2.718281828
-1: 1/2.718281828-1 = -0.6321205587664327
-3:1/(2.7182818282.7182818282.718281828)-1 =-0.9502129316069129

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值