tensorflow 2.0 函数详解

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


1.tf.split
	tf.split(
		value,
		num_or_size_splits,
		axis=0,
		num=None,
		name='split'
	)
	num_or_size_splits可以为整数,也可以为列表。
	num_or_size_splits为整数的话,表示切割出的每个子tensor上的axis=0上的维度数为原始输入tensor的axis=0上的维度数除以num_or_size_splits。
	num_or_size_splits为列表的话,表示切割出的子tensor数量和列表元素数量一致,并且每个子tensor在axis=0维度上按照对应列表元素数值进行切割出相应的数量。

	import tensorflow as tf
	# 'value'是一个输入的tensor,shape为[5, 30]
	# 按照[4, 15, 11]的切割份数在指定的axis维度为1上的输入数据进行切割为3个子tensor
	split0, split1, split2 = tf.split(value, [4, 15, 11], 1)
	tf.shape(split0)  # 第1个子tensor的shape为[5, 4]
	tf.shape(split1)  # 第2个子tensor的shape为[5, 15]
	tf.shape(split2)  # 第3个子tensor的shape为[5, 11]
	# 按照指定的axis维度为1上进行切割为3个子tensor,每个子tensor的axis维度为1上的数量为30除以num_or_size_splits等于10
	split0, split1, split2 = tf.split(value, num_or_size_splits=3, axis=1)
	tf.shape(split0)  # [5, 10]
	tf.shape(split1)  # [5, 10]
	tf.shape(split2)  # [5, 10]

2.tf.identity
	tf.identity(
		input,
		name=None
	) 
	返回与input的形状和内容均相同的张量
	Args:
		input: 一个Tensor
		name: 操作的名称(可选)
	Returns:
		与输入类型相同的一个Tensor

	import tensorflow as tf
	#
	val0 = tf.ones((1,), dtype=tf.float32)
	#array([1.], dtype=float32)
	val0.numpy()
	#
	a = tf.atan2(val0, val0)
	#array([0.7853982], dtype=float32)
	a.numpy()
	#
	a_identity = tf.identity(a)
	print(a.numpy())          #[0.7853982]
	print(a_identity.numpy()) #[0.7853982]

3.tf.pad
	tf.pad(
		tensor,
		paddings,
		mode='CONSTANT',
		constant_values=0,
		name=None
	)
	此操作根据指定的paddings来填充张量。填充是形状为[n,2]的整数张量,其中n是张量的级别。
	对于输入的每个维度D,paddings[D,0]表示在该维度的张量内容之前要添加多少个值,paddings[D,1]表示在该维度的张量内容之后要添加多少个值。
	如果模式为"REFLECT",则paddings[D, 0]和paddings[D, 1]都不得大于张量尺寸tensor.dim_size(D) - 1。
	如果模式是"SYMMETRIC",那么paddings[D, 0]和paddings[D, 1]都不能大于张量尺寸tensor.dim_size(D)。
	输出的每个维度D的填充大小为:paddings[D, 0] + tensor.dim_size(D) + paddings[D, 1]

	import tensorflow as tf
	t = tf.constant([[1, 2, 3], [4, 5, 6]])
	#

	#该paddings表示在输入tensor中对应位置的上下填充为0行,左右填充为0列
	paddings = tf.constant([[0,0], [0,0]])
	tf.pad(t, paddings, "CONSTANT")
	#

	#该paddings表示在输入tensor中对应位置的上下填充为0行,左右填充为1列
	paddings = tf.constant([[0,0], [1,1]])
	tf.pad(t, paddings, "CONSTANT")
	#array([[0, 1, 2, 3, 0],
	#       [0, 4, 5, 6, 0]])>

	#该paddings表示在输入tensor中对应位置的上下填充为1行,左右填充为0列
	paddings = tf.constant([[1,1], [0,0]])
	tf.pad(t, paddings, "CONSTANT")
	#array([[0, 0, 0],
	#       [1, 2, 3],
	#       [4, 5, 6],
	#       [0, 0, 0]])>

	#该paddings表示在输入tensor中对应位置的上下填充为1行,左右填充为1列
	paddings = tf.constant([[1,1], [1,1]])
	tf.pad(t, paddings, "CONSTANT")
	#array([[0, 0, 0, 0, 0],
	#       [0, 1, 2, 3, 0],
	#       [0, 4, 5, 6, 0],
	#       [0, 0, 0, 0, 0]])>

	#该paddings表示在输入tensor中对应位置的上下填充为1行,左右填充为2列
	paddings = tf.constant([[1, 1], [2, 2]])
	# 使用了默认参数mode='CONSTANT'和constant_values=0,即默认填充的为常数0
	# 't'的等级是2
	tf.pad(t, paddings, "CONSTANT")
	# [[0, 0, 0, 0, 0, 0, 0],
	#  [0, 0, 1, 2, 3, 0, 0],
	#  [0, 0, 4, 5, 6, 0, 0],
	#  [0, 0, 0, 0, 0, 0, 0]]

	tf.pad(t, paddings, "REFLECT")  
	# [[6, 5, 4, 5, 6, 5, 4],
	#  [3, 2, 1, 2, 3, 2, 1],
	#  [6, 5, 4, 5, 6, 5, 4],
	#  [3, 2, 1, 2, 3, 2, 1]]
	tf.pad(t, paddings, "SYMMETRIC")  
	# [[2, 1, 1, 2, 3, 3, 2],
	#  [2, 1, 1, 2, 3, 3, 2],
	#  [5, 4, 4, 5, 6, 6, 5],
	#  [5, 4, 4, 5, 6, 6, 5]]

4.tf.reduce_mean
	tf.math.reduce_mean(
		input_tensor,
		axis=None,
		keepdims=False,
		name=None
	)
	设置keepdims=True的话,会保留维度为1。

	import tensorflow as tf
	t = tf.constant([[[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]], [[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]]], dtype=tf.float64)
	out = tf.reduce_mean(t, [1, 2], keepdims=True)
	#
 	   
	t = tf.constant([[[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]], [[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]]])
	out = tf.reduce_mean(t, [1, 2])
	#

 

你可能感兴趣的:(人工智能,TensorFlow)