tensorflow 2基础

机器学习终于开坑了!!

机器学习当然要tensorflow+gpu啦(可我没有/(ㄒoㄒ)/~~)

学学基础tensorflow+cpu应该也可以吧

之前我是直接看吴恩达的视频,那些算法原理懂了个大概,结果发现根本就无法实现...也无法理解 tf 里面那些函数的作用

所以我这次准备再系统学习一遍

找基于tf 2 做机器学习的资源找了好半天,有的不是太老用tf 1.0,就是念ppt

最后感觉还是这个视频讲的最详细

https://www.bilibili.com/video/BV1ua4y1t7Ws?

他是先一步步手码实现实战实例,之后再用tf的函数来进行简化,更好让人理解原理和实现

下面正文:

其实tf和numpy基础功能也差不多,用tf 2 也是为了更好和numpy兼容|更方便

tf.zeros(shape,dtype=tf.float32) 全0

tf.zeros_like(x) 直接根据x的dim来创建 0 matrix <==> tf.zeros(x.shape)

tf.ones(shape,dtpye=tf.float32) 全1 

tf.ones(x)   创建一个标量|dim=0 

tf.ones([])   创建一个 1*1的向量,值为 x

tf.ones([x]) 创建向量 shape=x

tf.math.log :以e为底的对数函数

tf.exp :指数函数

tf.uniform(shape,minval,maxval,dtpye) 均匀变化的数组

tf.random.normal(shape,mean(均值默认0),stddev(方差默认1))

tf.fill(dim,value) 填充数字

上面这些都和numpy没啥区别


tf.gather(a,axis,idx) axis可以指定轴,然后这个轴按照idx这个list中的顺序取a的数据

a.shape=[4,28,28,1] idx=[1,28,28,4]

a.shape=[1,28,28,,4] 相当于先把a==>[1,x] 再变成idx的维数

tf.constant(value,shape) 填充数字

x.ndim 返回维度

xxx=tf.covert_to_tensor(name,dtype) numpy转化为tensor类型

x.numpy() 转numpy

tf.is_tensor(x)  判断x是不是 tensor 类型

tf.random.shuffle(x) 将 x数组 随机打乱

tf.reshape(xx,shape) 将x张量 变成shape形

tf.reshape(xx,[-1,xxx]) -1代表这个维度的所有

比如 mnist 数据 ,batch=128的话 最后一组就不能满足[128,28,28,1]

这样tf.reshape(x,[-1,28,28,1]) 就不会报错

tf.expand_dim(xx,axis) xx张量增加第axis个维度(axis是从0开始)

tf.transpose(a,vector(如[x1,x2,x3,x4]))
相当于将原来图像做变换
比如原来是[n,h,w,c] vector=[0,3,2,1]
==> [n,c,w,h] 这样可以使content不改变 '实质'

tf.one_hot(x,depth) 将x转化为1*depth的one_hot向量

tf.concat([x1,x2,xn],axis) xi是张量,axis 表示张量在哪个轴上拼接

例如axis=0,则 [[x1],[x2]],axis=1,[[x1,x2]]

tf.squeeze(x,axis) 删去axis轴

tf.split(xx,list,axis) 将xx张量按axis和list分割成其他的张量

例如 axis=0,xx=[[x1],[x2],[x3],[x4]],list=[1:2:1]
output:[x1] [[x2],[x3]] [x4]
如果list是一个数代表平均分为list个张量

一般的机器学习中维度都是有'含义'的:

dim=3

句子:一共有几个句子,每个句子有几个单词,每个单词被看作多少维向量

[num,len,vector_dim]

dim=4

照片:一共有多少张照片,每个照片的大小(h,w),有几个通道

[num,height,weight,channel]

dim=5 |不太懂...

就是把一个总任务分割成了多个任务同时处理,每次处理的个数就成了第一维

[batch,num,h,w,rgb]

broadcast:

这是一种优化手段,不需要我们特殊去调用

简单来说就是自动匹配两个运算的维度

比如 [3,4,5,7]+[3]

<==> [3,4,5,7]+[3,1,1,1] 从右到左匹配是否有相同维度,如果没有自动加维度 1

<==> [3,4,5,7]+[3,4,5,7] 将所有1变成高维相等的维数

[3,4,5,6] + [1,4,5,1]

<==> [3,4,5,6]
方便许多

猜你喜欢

转载自www.cnblogs.com/cherrypill/p/12740005.html