tensorflow编程: Control Flow

Control Flow Operations

tf.identity

复制tensor

tf.identity (input, name=None)

import tensorflow as tf

t = tf.constant(value=[[1, 1, 1], [2, 2, 2]], dtype=tf.int32)
a1 = t
a2 = tf.identity(t)

print a1
assert a1 == t
print a2
assert a2 == t

经验证,a1 = t 得到的是 t,a2 = tf.identity(t) 得到的不是 t ,只是 t 的副本。这样有利于用副本进行运算而不引起 原tensor 的数值变化。

Tensor("Const:0", shape=(2, 3), dtype=int32)
Traceback (most recent call last):
Tensor("Identity:0", shape=(2, 3), dtype=int32)
  File "/home/user/Desktop/test/1.py", line 10, in <module>
    assert a2 == t
AssertionError

tf.tuple

将多个tensor放入一个tuple中并返回。

tf.tuple (tensors, name=None, control_inputs=None)

import tensorflow as tf

t1 = tf.constant(value=[[1, 1], [2, 2]], dtype=tf.int32)
t2 = tf.constant(value=[[3, 3], [4, 4]], dtype=tf.int32)
t3 = tf.constant(value=[[5, 5], [6, 6]], dtype=tf.int32)

tuple_t = tf.tuple([t1, t2, t3])
group_t = tf.group(t1, t2, t3)

with tf.Session() as sess:
    print tuple_t
    print sess.run(tuple_t)
    print '\n----------\n'
    print group_t
    print sess.run(group_t)
[<tf.Tensor 'tuple/control_dependency:0' shape=(2, 2) dtype=int32>, <tf.Tensor 'tuple/control_dependency_1:0' shape=(2, 2) dtype=int32>, <tf.Tensor 'tuple/control_dependency_2:0' shape=(2, 2) dtype=int32>]
[array([[1, 1],
       [2, 2]], dtype=int32), array([[3, 3],
       [4, 4]], dtype=int32), array([[5, 5],
       [6, 6]], dtype=int32)]

----------

name: "group_deps"
op: "NoOp"
input: "^Const"
input: "^Const_1"
input: "^Const_2"

None

tf.group

将多个op放入同一个op中并返回该op。

# 代码见 tf.tuple

Logical Operators

tf.logical_and

逻辑与

tf.logical_and (x, y, name=None)

import tensorflow as tf

x = tf.convert_to_tensor([True, True, True, False, False])
y = tf.convert_to_tensor([True, False, True, False, True])

logical_and = tf.logical_and(x=x, y=y)

with tf.Session() as sess:
    print logical_and
    print sess.run(logical_and)
Tensor("LogicalAnd:0", shape=(5,), dtype=bool)
[ True False  True False False]

tf.logical_not

逻辑非

tf.logical_not (x, name=None)

import tensorflow as tf

x = tf.convert_to_tensor([True, True, True, False, False])

logical_not = tf.logical_not(x=x)

with tf.Session() as sess:
    print logical_not
    print sess.run(logical_not)
Tensor("LogicalNot:0", shape=(5,), dtype=bool)
[False False False  True  True]

tf.logical_or

tf.logical_xor

Comparison Operators

tf.equal

比较 俩tensor 的 value部分 是否相等,返回 bool型 tensor。

tf.equal (x, y, name=None)

import tensorflow as tf

x = tf.convert_to_tensor([1, 2, 3])
y = tf.identity(x)

with tf.Session() as sess:
    print tf.equal(x, y)
    print sess.run(tf.equal(x, y))
Tensor("Equal:0", shape=(3,), dtype=bool)
[ True  True  True]

tf.not_equal

比较 俩tensor 的 value部分 是否不等,返回 bool型 tensor。

tf.not_equal (x, y, name=None)

tf.less

tensor x 是否小于 tensor y,返回 bool型 tensor。

tf.less (x, y, name=None)

tf.less_equal

tensor x 是否小于等于 tensor y,返回 bool型 tensor。

tf.less_equal (x, y, name=None)

tf.greater

tensor x 是否大于 tensor y,返回 bool型 tensor。

tf.greater (x, y, name=None)

tf.greater_equal

tensor x 是否大于等于 tensor y,返回 bool型 tensor。

tf.greater_equal (x, y, name=None)

tf.where

如果 xy 都为 None,则返回 tensor condition 中的 bool值True 的坐标列表。

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

import tensorflow as tf

x = tf.convert_to_tensor([[True, True, True],
                          [False, True, False],
                          [False, False, True]])
y = tf.where(x)

with tf.Session() as sess:
    print y
    print sess.run(y)
Tensor("Where:0", shape=(?, 2), dtype=int64)
# 从返回结果可知,第0行(的0、1、2)、第1行(的1)、第2行(的2)bool值为True
[[0 0]
 [0 1]
 [0 2]
 [1 1]
 [2 2]]

Debugging Operations



本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

对Python中的类做简要的分析

在Python中,定义类是通过class关键字,class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪...

206100
来自专栏机器学习入门

POJ 刷题系列:3295. Tautology

题意: 给出二元变量 p,q,r,s,t以及运算符K,A,N,E,C,求所给运算符和变量的集合是否符合永真,若永真输出tautology,否则输出not。 思...

21770
来自专栏C#

解析C#类中的构造函数

《解析C#类中的构造函数》 一.  C#中的构造函数概述: C#中类包含数据成员和函数成员。函数成员提供了操作类中数据的某些功能,包括方法、属性、构造器和终结器...

21750
来自专栏Petrichor的专栏

python: dict(字典) 操作

删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

18420
来自专栏Spark学习技巧

Java泛型详解——绝对是对泛型方法讲解最详细的,没有之一!

ArrayList可以存放任意类型,例子中添加了一个String类型,添加了一个Integer类型,再使用时都以String的方式使用,因此程序崩溃了。为了解决...

19420
来自专栏炉边夜话

构造函数浅析

构造函数浅析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

9930
来自专栏用户2442861的专栏

理解java Class类

http://blog.csdn.net/bingduanlbd/article/details/8424243/

12410
来自专栏小樱的经验随笔

【Java学习笔记之二十】final关键字在Java继承中的用法小结

谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我...

27880
来自专栏行者常至

泛型中获取到Class

61120
来自专栏待你如初见

Day11

for(元素的数据类型 变量名 : 数组名或者Collection集合对象名) {

11460

扫码关注云+社区

领取腾讯云代金券