大数据,机器学习,人工智能TensorFlow技术帖TensorFlow

机器学习入门Pre——TF-Boys的Tensorflow入门

2019-11-06  本文已影响0人  焜俞

跟着我左手右手一个慢动作~~耶呃~~来左边跟我一起画条龙,来右边跟我一起画道彩虹。

TensorFlow

正经点不和大家开玩笑,Tensorflow对于入门机器学习的同学们来说一定如雷贯耳。Tensorflow作为谷歌爸爸的开源机器学习框架,强大咱就不多说了,它在搭建各种机器学习模型方面都很方便,可谓不可不学。

TaensorFlow的安装

本教程目前只介绍Windows平台下的安装教程(主要是只会Window,我太菜了),直接按照下面操作:

pip install tensorflow
或者
pip install tensorflow-gpu

然后到你的Idle中看一看,下面代码是否运行成功

import tensorflow as tf

1、张量的基本运算操作

import tensorflow as tf
sess=tf.InteractiveSession()#交互窗口下的会话,否则直接Session
x=tf.constant([[1,3,5,7],[6,8,9,1],[7,5,6,4],[3,1,4,2]],dtype=tf.float32)
#用constant方法创建张量,可以指定数据类型
floatx=tf.constant([[1,3,5,7],[6,8,9,1],[7,5,6,4],[3,1,4,2]],dtype=tf.float32)
tf.transpose(x).eval()#求张量的转置
#eval方法将张量转化为Numpy的数组
>>>array([[1, 6, 7, 3],
       [3, 8, 5, 1],
       [5, 9, 6, 4],
       [7, 1, 4, 2]])
tf.matmul(x,x).eval()#张量的乘法
>>>array([[ 75,  59,  90,  44],
       [120, 128, 160,  88],
       [ 91,  95, 132,  86],
       [ 43,  39,  56,  42]])
tf.matrix_determinant(floatx).eval()#注意这个时候输入要是浮点型数据,计算张量行列式
>>>559.99994
tf.matrix_inverse(floatx).eval()#张量的逆
>>>array([[-0.12857144, -0.09999999,  0.22857143,  0.04285716],
       [ 0.05714285,  0.09999999,  0.09285715, -0.43571427],
       [ 0.02142857,  0.09999999, -0.24642858,  0.36785716],
       [ 0.12142858, -0.1       ,  0.10357143, -0.08214287]],
      dtype=float32)#输入也必须是浮点型,否则会报错
tf.matrix_solve(floatx,tf.matmul(floatx,floatx)).eval()#求张量的解,已知一个张量和张量的积,求另一个张量
>>>array([[0.9999999, 3.0000007, 5.0000014, 7.000001 ],
       [6.       , 8.       , 9.       , 1.0000005],
       [7.       , 4.999999 , 5.999999 , 3.9999993],
       [3.0000002, 1.0000004, 4.0000005, 2.0000002]], dtype=float32)#解矩阵方程

2、约简:是一种跨纬度的张量操作,计算结果比原张量缩减一个维度

import tensorflow as tf
sess=tf.InteractiveSession()
t=tf.constant([[1,2,3],[3,2,1],[8,7,9]])
tf.reduce_max(t,reduction_indices=1).eval()#求每一行的最大值
>>>array([3, 3, 9])
tf.reduce_min(t,reduction_indices=1).eval()#求最小
>>>array([1, 1, 7])
tf.reduce_mean(t,reduction_indices=1).eval()#求平均
>>>array([2, 2, 8])

3、张量分割:通过索引对重复索引元素进行操作

import tensorflow as tf
sess=tf.InteractiveSession()
option=tf.constant([0,0,1,2,2])
t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
#[0,0,1,2,2]分别对应从第一到第五行;1,2两行都是0,所以会对它俩进行操作,同理对4,5两行
tf.segment_sum(t,option).eval()
>>>array([[ 3,  7, 11, 15],
       [ 2,  5,  7,  9],
       [10, 12, 12,  8]])#对1,2两行上下求和;对4,5两行上下求和
tf.segment_max(t,option).eval()
>>>array([[2, 4, 6, 8],
       [2, 5, 7, 9],
       [9, 7, 6, 4]])#同理,求最大值
tf.segment_min(t,option).eval()
>>>array([[1, 3, 5, 7],
       [2, 5, 7, 9],
       [1, 5, 6, 4]])#同理求最小
tf.segment_mean(t,option).eval()
>>>array([[1, 3, 5, 7],
       [2, 5, 7, 9],
       [5, 6, 6, 4]])#同理求平均值

4、序列:返回操作对应元素的索引

t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
tf.arg_max(t,0).eval()#第一个参数是张量,第二个是轴;返回每一列最大值的索引
>>>array([4, 4, 2, 2], dtype=int64)
tf.arg_min(t,1).eval()#返回每一行最小值的索引
array([0, 0, 0, 0, 3], dtype=int64)

5、张量形状变换

t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
tf.shape(t).eval()#返回张量形状
>>>array([5, 4])
tf.size(t).eval()#返回张量的大小
>>>20
tf.reshape(t,[5,4]).eval()#改变张量的形状
>>>array([[1, 3, 5, 7],
       [2, 4, 6, 8],
       [2, 5, 7, 9],
       [1, 5, 6, 4],
       [9, 7, 6, 4]])

6、张量切片(难点)

t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
tf.slice(t,[2,2],[2,2]).eval()
array([[7, 9],
       [6, 4]])

原理:第一个数组表示初始位置,第二个表示截取的张量形状;上面第一个[2,2]表示第三行第三列(数组索引从0开始),7即为起始元素;第二个数组[2,2]表示从起始元素开始算几行几列,[2,2]就表示两行两列,也就是[[7,9],[6,4]]

练习题

对数组[[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]],tf.slice([1,2],[4,2])切片结果是多少?
答案:[[6,8],[7,9],[6,4],[6,4]],你做对了吗?

以上就是TensorFlow最最基本的操作。有人可能就要问了,TensorBoard呢?Holder呢?哎,别急别急,等到用时,结合实例学习岂不更好?


我要变强,我要变强,一起变强吧
上一篇 下一篇

猜你喜欢

热点阅读