这篇教程一小时学会TensorFlow2之基本操作1实例代码写得很实用,希望能帮到您。
概述TensorFlow2 的基本操作和 Numpy 的操作很像. 今天带大家来看一看 TensorFlow 的基本数据操作.
创建数据详细讲解一下 TensorFlow 创建数据的集中方法.
创建常量tf.constant() 格式为: tf.constant(value,dtype,shape,name) 参数: - value: 常量值
- dtype: 数据类型
- shape: 表示生成常量数的维度
- name: 数据名称
例子: # 创建常量1c1 = tf.constant(1)print(c1)# 创建常量, 类型为boolc2 = tf.constant([True, False])print(c2)# 创建常量1, 类型为float32, 大小为3*3c3 = tf.constant(0.1, shape=[2, 2])print(c3)# 创建常量, 类型为string字符串c4 = tf.constant("Hello World!")print(c4) 输出结果: tf.Tensor(1, shape=(), dtype=int32) tf.Tensor([ True False], shape=(2,), dtype=bool) tf.Tensor( [[0.1 0.1] [0.1 0.1]], shape=(2, 2), dtype=float32) tf.Tensor(b'Hello World!', shape=(), dtype=string)
创建数据序列格式: range(start, limit, delta=1, dtype=None, name='range') 参数: - start: 开始位置
- limit: 序列的上限
- delta: 相当于 Numpy 的 step, 步长
- detype: 数据类型
- name: 数据名称, 默认为 “range”
例子: # 创建数字序列r1 = tf.range(4)print(r1) 输出结果: tf.Tensor([0 1 2 3], shape=(4,), dtype=int32)
创建图变量格式: tf.Variable.init(initial_value, trainable=True, collections=None, validate_shape=True, name=None) 参数: 参数名称 | 参数类型 | 参数含义 | initial_value | 所有可以转换为 Tensor 的类型 | 变量的初始值 | trainable | bool | 如果为 True, 会把它加入到 GraphKeys.TRAINABLE_VARIABLES, 才能对它使用 Optimizer | collections | list | 指定该图变量的类型, 默认为 [GraphKeys.GLOBAL_VARIABLES] | validate_shape | bool | 如果为 False, 则不进行类型和维度检查 | name | string | 数据名称 | 例子: # 创建图变量v1 = tf.Variable(tf.range(6))print(v1)print(isinstance(v1, tf.Tensor)) # Falseprint(isinstance(v1, tf.Variable)) # Trueprint(tf.is_tensor(v1)) # True 输出结果: False True True
tf.zerostf.zeros 可以帮助我们创建一个所有参数为 0 的 tensor 对象. 类似于 np.zeros. 格式: tf.zeros(shape, dtype=tf.dtypes.float32, name=None) 参数: - shape: 数组的形状
- dype: 数据类型, 默认为float32
- name: 数据名称
例子: # 创建参数为0的tensorz1 = tf.zeros([1])print(z1)z2 = tf.zeros([3, 3])print(z2) 输出结果: tf.Tensor([0.], shape=(1,), dtype=float32) tf.Tensor( [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]], shape=(3, 3), dtype=float32)
tf.onestf.ones 用法和 tf.zeros 一样, 可以帮助我们创建一个所有参数为 1 的 tensor 对象. tf.ones(shape, dtype=tf.dtypes.float32, name=None) 参数: - shape: 数组的形状
- dype: 数据类型, 默认为 float32
- name: 数据名称
例子: # 创建参数为1的tensoro1 = tf.ones([1])print(o1)o2 = tf.ones([3, 3])print(o2) 输出结果: tf.Tensor([1.], shape=(1,), dtype=float32) tf.Tensor( [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]], shape=(3, 3), dtype=float32)
tf.zeros_liketf.zeros_like 可以帮我们创建一个与给定 tensor 类型大小一致的 tensor. 类似 np.zeros_like. 格式: tf.zeros_like(tensor, dype=None, name=None) 参数: - tensor: 传入的 tensor
- dype: 数据类型, 默认为 float32
- name: 数据名称
例子: # tf.zeros_liket1 = tf.range(6)z1 = tf.zeros_like(t1)print(z1) 输出结果: tf.Tensor([0 0 0 0 0 0], shape=(6,), dtype=int32)
tf.ones_like格式: tf.ones_like(tensor, dype=None, name=None) 参数: - tensor: 传入的 tensor
- dype: 数据类型, 默认为 float32
- name: 数据名称
例子: # tf.ones_liket1 = tf.range(6)o1 = tf.ones_like(t1)print(o1) 输出结果: tf.Tensor([1 1 1 1 1 1], shape=(6,), dtype=int32)
tf.filltf.fill 可以帮助我们创建一个指定形状和内容的 tensor. 格式: tf.fill(shape, value, name=None) 参数: - shape: 数组的形状
- value: 填充的值
- name: 数据名称
例子: # tf.fillf1 = tf.fill([2, 2], 0)print(f1)f2 = tf.fill([3, 3], 6)print(f2) 输出结果: [[0 0] [0 0]], shape=(2, 2), dtype=int32) tf.Tensor( [[6 6 6] [6 6 6] [6 6 6]], shape=(3, 3), dtype=int32)
tf.gathertf.gather: 根据索引从参数轴收集切片. 格式: tf.gather( params, indices, validate_indices=None, axis=None, batch_dims=0, name=None) 参数: - params: 传入的张量
- indices: A Tensor. types 必须是: int32, int64. 里面的每一个元素大小必须在 [0, params.shape[axis]) 范围内
- axis: 维度, 默认为 0
例子: input =[ [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]], [[5, 5, 5], [6, 6, 6]]], [[[7, 7, 7], [8, 8, 8]], [[9, 9, 9], [10, 10, 10]], [[11, 11, 11], [12, 12, 12]]], [[[13, 13, 13], [14, 14, 14]], [[15, 15, 15], [16, 16, 16]], [[17, 17, 17], [18, 18, 18]]] ]output=tf.gather(input, [0,2],axis=0) 输出结果: tf.Tensor( [[[[ 1 1 1] [ 2 2 2]] [[ 3 3 3] [ 4 4 4]] [[ 5 5 5] [ 6 6 6]]] [[[13 13 13] [14 14 14]]
[[15 15 15] [16 16 16]] [[17 17 17] [18 18 18]]]], shape=(2, 3, 2, 3), dtype=int32)
tf.random
正态分布tf.random.normal 可以帮我们创建随机数服从正态分布. 格式: tf.random.normal( shape, mean=0.0, stddev=1.0, dtype=tf.dtypes.float32, seed=None, name=None) 参数: - shape: 张量的形状
- mean: 正态分布的均值, 默认为 0.0
- stddev: 正态分布的标准差, 默认为 1.0
- dtype: 数据类型, 默认为 float32
- seed: 随机数种子
- name: 数据名称
例子: # tf.normaln1 = tf.random.normal([2, 2], mean = 1, stddev=1, seed=0)print(n1) 输出结果: tf.Tensor( [[0.60084236 3.1044393 ] [1.1710722 1.5465181 ]], shape=(2, 2), dtype=float32)
均匀分布tf.random.uniform 可以帮我们创建随机数服从均匀分布. 格式: tf.random.uniform( shape, minval=0, maxval=None, dtype=tf.dtypes.float32, seed=None, name=None) 参数: - shape: 张量的形状
- minval: 均匀分布的最小值, 默认为 0
- maxvak: 均匀分布的最大值
- dtype: 数据类型, 默认为 float32
- seed: 随机数种子
- name: 数据名称
例子: # tf.uniformu1 = tf.random.uniform([2, 2], minval=0, maxval=1)print(u1) 输出结果: tf.Tensor( [[0.7382153 0.6622821 ] [0.22840345 0.09706533]], shape=(2, 2), dtype=float32)
打乱顺序tf.random.shuffle 可以帮助我们打乱张量的顺序. 格式: tf.random.shuffle( value, seed=None, name=None) 参数: - value: 要被打乱的张量
- seed: 随机数种子
- name: 数据名称
例子: # tf.shuffles1 = tf.random.shuffle(tf.range(10))print(s1) 输出结果: tf.Tensor([1 7 3 9 2 6 8 5 4 0], shape=(10,), dtype=int32)
获取数据信息
获取数据维度tf.rank 的用法和 np.ndim 基本一样. 格式: rank(input, name=None) # 类似np.ndim 参数: 例子: # 获取张量维度t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])print(tf.rank(t)) 输出结果: tf.Tensor(3, shape=(), dtype=int32)
数据是否为张量格式: 参数: 例子: # 判断是否为张量a = tf.constant([1, 2, 3])b = tf.constant([True, False, False])c = tf.constant("Hello World")d = np.arange(6)print(a)print(tf.is_tensor(a))print(b)print(tf.is_tensor(b))print(c)print(tf.is_tensor(c))print(d)print(tf.is_tensor(d)) 输出结果: tf.Tensor([1 2 3], shape=(3,), dtype=int32) True tf.Tensor([ True False False], shape=(3,), dtype=bool) True tf.Tensor(b'Hello World', shape=(), dtype=string) True [0 1 2 3 4 5] False
数据转换
转换成张量格式: tf.convert_to_tensor(value, dtype=None, dtype_hint=None, name=None) 参数: - value: 需要转换的值
- dtype: 数据类型
- dtype_hint: 当 dtype 为 None 时的备选方案
- name: 数据名称
例子: # 转换成张量array = np.arange(6)print(array.dtype)array_tf = tf.convert_to_tensor(array)print(array_tf) 输出结果: int32 tf.Tensor([0 1 2 3 4 5], shape=(6,), dtype=int32)
转换数据类型格式: cast(x, dtype, name=None) 参数: - x: 输入的值
- dtype: 数据类型
- name: 数据名称
例子: # 装换数据类型array_tf = tf.constant(np.arange(6))print(array_tf)array_tf = tf.cast(array_tf, dtype=tf.float32)print(array_tf)tf_bool = tf.cast(tf.constant([False, True]), dtype=tf.int32)print(tf_bool) 输出结果: tf.Tensor([0 1 2 3 4 5], shape=(6,), dtype=int32) tf.Tensor([0. 1. 2. 3. 4. 5.], shape=(6,), dtype=float32) tf.Tensor([0 1], shape=(2,), dtype=int32)
转换成 numpy例子: # tensor转换成numpyarray_tf = tf.ones([2,2])array_np = array_tf.numpy()print(array_np) 输出结果: [[1. 1.] [1. 1.]]
到此这篇关于一小时学会TensorFlow2之基本操作1的文章就介绍到这了,更多相关TensorFlow2基本操作内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! Python用20行代码实现完整邮件功能 详解python opencv图像混合算术运算 |