zoukankan      html  css  js  c++  java
  • Tensorflow2.0笔记03——基本概念

    Tensorflow2.0笔记

    本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师

    3 Tensorflow2.0 基本概念与常见函数

    3.1 基本概念

    ​ TensorFlow 中的 Tensor 表示张量,是多维数组、多维列表,用阶表示张量的维数。0 阶张量叫做标量,表示的是一个单独的数,如 123;1 阶张量叫作向量, 表示的是一个一维数组如[1,2,3];2 阶张量叫作矩阵,表示的是一个二维数组, 它可以有 ij 列个元素,每个元素用它的行号和列号共同索引到,如在[[1,2,3],[4,5,6],[7,8,9]]中,2 的索引即为第 0 行第 1 列。张量的阶数与方括号的数量相同,0 个方括号即为 0 阶张量,1 个方括号即为 1 阶张量。故张量可以表示0 阶到 n 阶的数组。也可通过 reshape 的方式得到更高维度数组,举例如下:

    ​ c = np.arange(24).reshape(2,4,3)

    ​ print(c)

    输出结果:[[[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]]

    ​ [[12 13 14] [15 16 17] [18 19 20] [21 22 23]]]

    ​ TensorFlow 中数据类型包括 32 位整型(tf.int32)、32 位浮点(tf.float32)、64 位浮点(tf.float64)、布尔型(tf.bool)、字符串型(tf.string)

    ​ 创建张量有若干种不同的方法:

    (1) 利用 tf.constant(张量内容,dtype=数据类型(可选)),第一个参数表示张量内容, 第二个参数表示张量的数据类型。举例如下:

    ​ import tensorflow as tf a=tf.constant([1,5],dtype=tf.int64)

    ​ print(a)

    ​ print(a.dtype)

    ​ print(a.shape)

    ​ 输出结果为:

    ​ <tf.Tensor([1,5], shape=(2 , ) , dtype=int64)>

    ​ <dtype: 'int64'>

    ​ (2,)

    ​ (2,)

    ​ 即会输出张量内容、形状与数据类型,shape 中数字为 2,表示一维张量里有 2个元素。

    ​ 注:去掉 dtype 项,不同电脑环境不同导致默认值不同,可能导致后续程序 bug

    (2) 很多时候数据是由 numpy 格式给出的,此时可以通过如下函数将 numpy 格式化为 Tensor 格式:tf. convert_to_tensor(数据名,dtype=数据类型(可选))。举例如下:

    ​ import tensorflow as tf

    ​ import numpy as np

    ​ a = np.arange(0, 5)

    ​ b = tf.convert_to_tensor( a, dtype=tf.int64 )

    ​ print(a)

    ​ print(b)

    ​ 输出结果为:[0 1 2 3 4]

    ​ tf.Tensor([0 1 2 3 4], shape=( 5 , ), dtype=int64)

    ​ 可见,将 numpy 格式的 a 转换成了 Tensor 格式的 b。

    (3) 可采用不同函数创建不同值的张量。如用 tf. zeros(维度)创建全为 0 的张量, tf.ones(维度)创建全为 1 的张量,tf. fill(维度,指定值)创建全为指定值的张量。其中维度参数部分,如一维则直接写个数,二维用[行,列]表示,多维用[n,m,j..] 表示。举例如下:

    ​ a = tf.zeros([2, 3])

    ​ b = tf.ones(4)

    ​ c = tf.fill([2, 2], 9)

    ​ print(a)

    ​ print(b)

    ​ print(c)

    ​ 输出结果:tf.Tensor([[0. 0. 0.] [0. 0. 0.]], shape=(2, 3), dtype=float32)

    ​ tf.Tensor([1. 1. 1. 1.], shape=(4, ), dtype=float32)

    ​ tf.Tensor([[9 9] [9 9]], shape=(2, 2), dtype=int32)

    ​ 可见,tf.zeros([2,3])创建了一个二维张量,第一个维度有两个元素,第二个维度有三个元素,元素的内容全是 0;tf.ones(4)创建了一个一维张量,里边有 4 个元素,内容全是 1;tf.fill([2,2],9)创建了一个两行两列的二维张量,第一个维度有两个元素,第二个维度也有两个元素,内容都是 9。

    (4) 可采用不同函数创建符合不同分布的张量。如用 tf. random.normal (维度, mean=均值,stddev=标准差)生成正态分布的随机数,默认均值为 0,标准差为 1; 用 tf. random.truncated_normal (维度,mean=均值,stddev=标准差)生成截断式正态分布的随机数,能使生成的这些随机数更集中一些,如果随机生成数据的取值在(m - 2su + 2s ) 之外则重新进行生成,保证了生成值在均值附近;利用 tf.random. uniform(维度,minval=最小值,maxval=最大值),生成指定维度的均匀分布随机数,用 minval 给定随机数的最小值,用 maxval 给定随机数的最大值, 最小、最大值是前闭后开区间。举例如下:

    ​ d = tf.random.normal ([2, 2], mean=0.5, stddev=1)

    ​ print(d)

    ​ e = tf.random.truncated_normal ([2, 2], mean=0.5, stddev=1)

    ​ print(e)

    ​ f = tf.random.uniform([2, 2], minval=0, maxval=1)

    ​ print(f)

    ​ 输出结果:tf.Tensor([[0.7925745 0.643315 ]

    ​ [1.4752257 0.2533372]], shape=(2, 2), dtype=float32)

    ​ tf.Tensor([[ 1.3688478 1.0125661 ]

    ​ [ 0.17475659 -0.02224463]], shape=(2, 2), dtype=float32)

    ​ tf.Tensor([[0.28219545 0.15581512]

    ​ [0.77972126 0.47817433]], shape=(2, 2), dtype=float32)

  • 相关阅读:
    laravel使用redis报错
    PHP新特性W3Cschool
    【python】跳过验证直接登陆-cookie已经知道需要部分直接注入
    【python】显示等待
    【python】pymysql库的简单使用
    【python】UI自动化优化浏览器重复打开和跑脚本时电脑无法做其他工作的问题
    【python】seleniumwire和selenium的区别
    【python】UI自动化-新版
    【python】UI自动化获取输入框的值
    【python】UI自动化多窗口处理
  • 原文地址:https://www.cnblogs.com/wind-and-sky/p/14916444.html
Copyright © 2011-2022 走看看