欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TensorFlow笔记(三)常用操作函数

程序员文章站 2022-03-03 17:41:42
...

基础操作函数

tf.abs(x, name=None)
计算张量的绝对值,输入一个 Tensor 或 SparseTensor,返回一个与 x 有相同的大小和类型 的 Tensor 或 SparseTensor。
tf.add(x, y, name=None)
返回 x + y 值,x和y有相同类型。
tf.acos(x, name=None) / tf.asin / tf.atan
计算张量元素x的 acos。
tf.add_n(inputs, name=None)
计算输入列表中所有张量的和,inputs是一个列表,也可以通过tf.math.add_n调用,和tf.add的区别是,输入是列表,计算多个张量的和。
import tensorflow as tf

input1 = tf.constant([1.0, 2.0, 3.0])
input2 = tf.constant([4.0, 2.0, 2.0])
input3 = tf.Variable(tf.random_uniform([3]))
output = tf.add_n([input1, input2, input3])
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init_op)
  print(sess.run(input1))
  print(sess.run(input2))
  print(sess.run(input3))
  print(sess.run(output))
tf.add_to_collection(name, value)
将元素value添加到列表name中,注意name是列表的name,不是列表本身。无返回值。
import tensorflow as tf

tf.add_to_collection('losses', tf.constant(2.2))
tf.add_to_collection('losses', tf.constant(3.))
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)
    print(sess.run(tf.get_collection('losses')))
    print(sess.run(tf.add_n(tf.get_collection('losses'))))
tf.argmax(input,axis=None,name=None,dimension=None,output_type=dtypes.int64) / tf.argmin
返回在张量的坐标轴上具有的最大/最小值的索引,和numpy.argmax()用法一致,axis指定计算维度,默认为0,需要注意的是np中默认是计算全局最大最小值。tf中还有另外一个api tf.arg_max,用法一致,但是必修指定维度,一般很少用。
tf.assign(ref, value, validate_shape=None, use_locking=None, name=None)
value赋值给ref,value必须具有与ref相同的类型,ref 必须是tf.Variable创建的tensor,即可变张量。
validate_shape:一个可选的 bool.默认为 True.如果为 true, 则操作将验证 value 的形状是否与分配给的张量的形状相匹配,不匹配报错;如果为 false, 则不检查,直接赋新值。
use_locking:一个可选的 bool.默认为 True.如果为 True, 则分配将受锁保护。
import tensorflow as tf;

A = tf.Variable([1,2,3])
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(A))
    sess.run(tf.assign(A,[1,2,5]))
    print(sess.run(A))
tf.as_dtype(type_value)
把type_value转为tf.DType类型,即转换为tf中的数据类型。tf.as_dtype(1.0) --> tf.float32
tf.bincount(arr,weights=None,minlength=None,maxlength=None,dtype=dtypes.int32)
统计整数数组中每个值的出现次数,结果从0开始列出。
minlength:如果给定,确保输出至少具有长度 minlength ,必要时在末尾填充零.
maxlength:如果给定,在 arr 中跳过等于或大于的值 maxlength,确保输出的长度最多为 maxlength.
import tensorflow as tf

a = [0, 1, 1, 2, 2, 10]
sess = tf.Session()
print(sess.run(tf.bincount(a, minlength=12, maxlength=20)))

##[1 2 2 0 0 0 0 0 0 0 1 0],可以看到结果长度为12,在0、1、2、10位置上有对应统计结果
boolean_mask(tensor, mask, name="boolean_mask", axis=None)
布尔掩码取值。
tensor = [0, 1, 2, 3]
mask = np.array([True, False, True, False])
boolean_mask(tensor, mask)  # [0, 2]
tf.case(pred_fn_pairs,default=None,exclusive=False,strict=False,name="case")
相当于多if/else。pred_fn_pairs是一个dict or list of pair。
exclusive:True计算所有条件, 如果有多个条件的计算结果为true, 引发异常。False表示遇到第一个成立的条件就停止,注意如果pred_fn_pairs是字典,不能保证计算顺序,看下面例子。
import tensorflow as tf

def f1():
    return tf.constant(10)

def f2():
    return tf.constant(27)

def f3():
    return tf.constant(-1)

x = 10
y = 30

r = tf.case({tf.less(x, y): f1, tf.greater(y, x): f2},default=f3, exclusive=False)
q = tf.case([(tf.less(x, y),f1), (tf.greater(y, x),f2)],default=f3, exclusive=False)
sess = tf.Session()
print(sess.run(r))
print(sess.run(q))
tf.ceil(x, name=None)
返回不小于 x 的元素最小整数。
tf.check_numerics(tensor, message, name=None)
检查tensor是否是`bfloat16`, `half`, `float32`, `float64`类型元素,且不含有(NaN) or infinity (Inf),注意tensor不能是整型值,返回tensor或者异常。
message:异常信息前缀。
tf.complex(real, imag, name=None)
复数,real是实部,imag是虚部,都必须是浮点类型。
tf.concat(values, axis, name="concat")
按照指定维度拼接张量,values是一个张量列表。

 

 

类型转换函数

tf.cast(x, dtype, name=None)
最常用的类型转换函数,返回转换后的结果。x是一个张量或 SparseTensor
x = tf.constant([1.8, 2.2], dtype=tf.float32)
tf.cast(x, tf.int32)  # [1, 2], dtype=tf.int32
tf.as_string(input, precision=-1, scientific=False, shortest=False, width=-1, fill="", name=None)
转换其它类型张量为字符串.
precision:一个可选的 int.默认为-1.用于浮点数的后十进制精度.仅在 > -1时有效.
scientific:一个可选的布尔值,默认为 False,使用科学计数表示浮点数.
shortest:一个可选的布尔值.默认为 False.对浮点数使用最短的表示(无论是科学的还是标准的).
width:可选的 int.默认为-1.将前十进制数字填充到此宽度.适用于浮点数和整数,仅在 width> -1时才使用.
fill:可选的 string.默认为空.要填充的值如果宽度 > -1 .如果为空,则用空格填充;另一个典型值是 "0",字符串不能超过1个字符.

tf.to_bfloat16(x, name="ToBFloat16")
tf.to_double(x, name='ToDouble')
tf.to_float(x, name='ToFloat')
tf.to_int32(x, name='ToInt32')
tf.to_int64(x, name='ToInt64')
 

初始化函数

tf.constant(value, dtype=None, shape=None, name="Const", verify_shape=False)
创建一个常量,value可以是一个值,也可以是矩阵。

 

 

断言函数

tf.Assert(condition, data, summarize=None, name=None)
tf.assert_equal(x,y,data = None,summarize = None,message = None,name = None)
tf.assert_greater(x,y,data = None,summarize = None,message = None,name = None)
tf.assert_greater_equal(x,y,data = None,summarize = None,message = None,name = None)
tf.assert_integer(x,message = None,name = None)
tf.assert_less(x,y,data = None,summarize = None,message = None,name = None)
tf.assert_less_equal(x,y,data = None,summarize = None,message = None,name = None)
tf.assert_negative(x,data = None,summarize = None,message = None,name = None)
tf.assert_none_equal(x,y,data = None,summarize = None,message = None,name = None)
tf.assert_non_negative(x,data = None,summarize = None,message = None,name = None)
tf.assert_non_positive(x,data = None,summarize = None,message = None,name = None)
tf.assert_positive(x,data = None,summarize = None,message = None,name = None)
tf.assert_proper_iterable(values)
tf.assert_rank(x,rank,data = None,summarize = None,message = None,name = None)
tf.assert_rank_at_least(x,rank,data = None,summarize = None,message = None,name = None)
tf.assert_same_float_dtype(Tensors = None,dtype = None)
tf.assert_scalar(tensor,name = None)
tf.assert_type(tensor,tf_type,message = None,name = None)