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)
上一篇: JAVA使用JDOM创建简单xml
下一篇: eclipse 连接 mysql