| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> tensorflow基础操作 -> 正文阅读 |
|
[Python知识库]tensorflow基础操作 |
目录 ? ? ? ? ? ? ? ? ????????函数实现? ? ? ?? 数据类型:????????与C语言类似 ? -?int (整型), float(单精度浮点型) ,double(双精度浮点型) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -bool(布尔型,也就是True,Flase) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -string(字符型) 数据载体:? ? ? ? 这块就是tensorflow和其他库大相径庭的地方。为了能更好的适应深度学习,具备自动求导,gpu加速等,tensorflow中设计的数据载体为:Tensor ? ? ? ? ? ? ? ? ? ? ? ? 零维,也就是scalar,如1.1,2,3之类的标量 ? ? ? ? ? ? ? ? ? ? ? ? 一维,vector,被称为向量,矢量,因为需要具备方向和大小两种数据,,如[ 1.1],[2.2,1.1],需要注意的是,其与scalar在表现形式上的差别在于数据外面有没有加方括号。 ? ? ? ? ? ? ? ? ? ? ? ? 二维,matrix,矩阵,方框之外还套着层方框。如[[1.1,2.2,3.3],[4,2,6],[8,5.5,3]].???????? ? ? ? ? ? ? ? ? ? ? ? ? ?当维度大于二时(rank>2)时,就称为tensor了 ? ? ? ? 而tensorflow这词也是因此而起,tensor在程序里不断地流动。 如何创建一个tensor???????? ? ? ? ? 1.tf.constant,如:
? ? ? ? 2. tf.convert_to_tensor() ? ? ? ? 3. tf.zeros()? ?#此处函数传递的是shape而不是data ? ? ? ? 4.tf.zeros_like() #此处函数传递的是data 其可等价为? ? ? ? ? 5.tf.ones() #与3用法一样 ? ? ? ? 6.tf.oner_like() ? ? ? ? 7.tf.fill ( [ 2,3 ] , 0)? #将创建一个矩阵将一个常数填满其中? ? ? ? ? 创建随机数?????????1. tf.random.normal( shape , ?????????????????????????????????????????????mean = 0.0 , ??????????????????????????????????????????????tddev = 1.0? , ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dtype = tf.float32?, ?????????????????????????????????????????????seed = None?, name? = None?)? ? ? ? ? ? ? ? #具有正态分布概率的随机数 ? ? ? ? ` shape: 张量类型,必填 ? ? ? ? · mean :正态分布的均值 , 默认为0.0 ? ? ? ? ?·stddev : 正态分布的标准差, 默认为1.0 ? ? ? ? ? ·dtype : 输出的类型 , 默认为tf.float32? ? ? ? ? ? ?`seed : 随机种子数,是一个整数,设置后,每次生成的随机数都一样 ? ? ? ? ? ? `name : 操作的名字? ? ? ? ? ? 2. tf.random.truncated_normal (shape ,mean = 0.0 , tddev = 1.0? ,dtype = tf.float32?, seed = None?, name? = None)?? ? ? ??#参数与上面如出一辙,不过随机值是从截断的正态分布中输出,生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择 ? ? ? ? ????????3.?tf.random_uniform(? ?shape, ????????????????????????????????????????????????????????minval=0, ????????????????????????????????????????????????????????maxval=None, ????????????????????????????????????????????????????????dtype=tf.float32, ????????????????????????????????????????????????????????seed=None, ????????????????????????????????????????????????????????name=None)? ? ? ? ?#具有上下限的随数机 ? ? ? ? ·minval : 最小值 ? ? ? ? ·maxval : 最大值 ? ? ? ?4. tf.random.shuffle(value, ???????? ????????????????????????????????????????seed = None, ????????????????????????????????????????name = None )? ?#沿着零维打乱 ????????
tensor的性质? ? ? ? 检查维度? ? ? ? ? ? ? ? ? ?1.? ? ? .ndim() ? ? ? ? ? ? ? ? ? ? 2.? ? tf.rank() ????????????????????????
? ? ??检查tensorflow是用cpu还是gpu? ? ? ? .gpu()? ?.cpu() ? ? ? 将tensor格式转换成numpy格式? ? ? ? ? ?.numpy() ? ? ? ? 检查tensor的数据类型? ? ? ? ? ? ? 1. tf.is_tensor() ? ? ? ? ? ? ? 2. .dtype ? ? ? ? ? ? ? 3. isinstance(a , tf.Tensor) 转换tensor? ? ? ? 将格式转换成tensor格式? ? ? ? tf.convert_to_tensor( ) ? ? ? ? ? ? ? ? ?
???????? ? ? ? ? tensor间的数据类型转换? ? ? ?????????tf.cast( a, dtype = tf.? ) ? ? ? ? ?将tensor声明成可训练变量? ? ? ? ? ? ? ? ?tf.Variable( a ) ? ? ? ? ? ? ? ? 注意:此处若是想用isconstance()检查是否为tensor格式,将无法检测出来 ????????????????
? ? ? ? ? 将tensor转换成numpy格式? ? ? ? ? ? ? 1.? .numpy() ? ? ? ? ? ? ? ?2. int( a )? #直接用强制类型转换 ?索引与切片? ? ? ? 两种索引方式? ? ? ? ? ? ? ?1. Basic indexing? # [idx][idx] ? ? ? ? ? ? ? ?2. Same with Numpy ? ? ? ? #[idx,idx]? ? ? ? ? 切片? ? ? ? ? ? ? ? 需配合着第二种索引方式 ,形式为[ start:over? :? step]? ?#start 为起始下标,默认为0,over为结束下标,默认为最后一个数字+1,step为步长 。 step默认为1。注意,此处设定的切片是包含左左端,不包含右端,故给定数值时需注意 ????????
?????????????????也可用...代替重复冗杂的数值 ????????
????????选择索引? ? ??1. tf.gather(params, ????????????????????????axis? ????????????????????????indices,? ????????????????????????validate_indices=None,? ????????????????????????batch_dims=0, ????????????????????????name=None )? ? ? ? ? ? ? ? #就是抽取出params的第axis维度上在indices里面所有的index
????????2.? tf.gather_nd(params, ????????????????????????????????indices, ????????????????????????????????name=None) ? ? ? ? ?#在params中的indices中的所有index
? ? ? ? ? ? ?3.? ? tf.boolean_mask( ? ? ? ? ? ??
维度变换? ? ? ?1.? tf.reshape( ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tensor, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?shape, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? name=None ??????????????????????????????)? ? #注意:只是转换了view而没转换content ????????
? ? ? ? ?????2.???transpose( ????????????????tensor, ????????????????perm=None, ??????????????? ?name='transpose' ???????????????? ) ?????????????????? ????????#转置函数 此函数会将content转换。,若是不设定perm?参数,函数将默认将tensor倒置 ?
tensor的运算规则? ? ? ? ? ? ? ? 此处涉及到线性代数方面的知识 ? ? ? ? ? ? ? ? 前置知识? ? ? ? ? ? ? ? ? ? ? ? 两矩阵相加的条件是 两矩阵必须同阶,相加也就是对应位置的数值相加 ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ?? ? ? ? ? ? ? ? ? ?tensor的运算?????????????????????????于是,但两个tensor运算时也需遵守这些规则。但值得注意的是,tensorflow中的乘法和加法会对tensor进行一定变化后才运算。 ? ? ? ? ? ? ? ? ? ? ? ? 加法? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 两shape不同的tensor,符合最小维度相同也能够相加,如 ?????????????????????????????????????????????????? ??????一个是[3,2] ,另一个是[1,2],它们最小的维度都为2 ,且不相同的维度其为1, tensorflow会将[1,2]转换成[3,2]若是? [3,2] +[2,2]就无法完成转换。 ????????????????????????????????????????????????? --->?。 ? ? ? ? ? ? ? ? 而对于更高维度的tensor加法,同样适用 ? ? ? ? ? ? ? ? ????????函数实现? ? ? ??用tf.broadcast_to的好处是:broadcast不会真将矩阵扩大,而是在运行时一个优化手段,既高效又省内存 ????????????????
数学计算? ? ? ? ? ? ? ?element-wise: ??????????????????????+(加), -(减), *(点乘,两个相同阶的矩阵,相对位置直接相乘),/(除), ? ? ? ? ? ? ? ?????????**(次方) ,tf.pow(次方)??,tf.square(平方) ,tf.sqrt(平方根) ? ? ? ? ? ? ? ????????? //(整除),%(取余) ? ? ? ? ? ? ?????????? tf.?exp(以e为底的幂函数),tf.math.log(以e为底的对数)???????? ? ? ? ? ? ? ? ? matrix-wise: ????????????????????????@(矩阵乘运算,叉乘),tf.matmul(矩阵乘运算) 比如[n,3,4]+[n,4,5] = [ n,3 ,5 ],需保证前个矩阵的列数和后个矩阵的行数相同,且最大的维度相同 ? ? ? ? ? ? ? ? ?dim-wise: ? ? ? ? ? ? ? ? ? ? ? ? tf.reduce_mean/max/min/sum |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 12:34:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |