深度学习——TensorFlow初体验

今天学习TensorFlow,一个超级好用的神经网络搭载库

什么是TensorFlow

TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。它是谷歌基于DistBelief进行研发的第二代人工智能学习系统。2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源。

其命名来源于本身的原理,Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算。Tensorflow运行过程就是张量从图的一端流动到另一端的计算过程。常用于计算图中

关于计算图,可以观看我之前的博客:AI学习——自动微分算法

TensorFlow的特性

  1. 高度的灵活性:只要能够将计算表示成为一个数据流图,那么就可以使用TensorFlow。
  2. 可移植性:TensorFlow支持CPU和GPU的运算,并且可以运行在台式机、服务器、手机移动端设备等等。
  3. 自动求微分:TensorFlow内部实现了自动对于各种给定目标函数求导的方式。
  4. 多种语言支持:Python、C++
  5. 性能高度优化

基础代码

TensorFlow API——数据类型

# 标量
import tensorflow as tf
a = tf.constant(1,2)
type(a)
a

在这里插入图片描述

# 向量
b = tf.constant([1,2.,3.3])
b.numpy(), b.shape
b

在这里插入图片描述

# 矩阵
c = tf.constant([[1,2],[3,4]])
c.shape
c

在这里插入图片描述

待优化张量

# 列表转张量
a = tf.Variable([[1,2],[3,4]])
a

在这里插入图片描述

# 全0向量矩阵
tf.zeros([2,2,2]), tf.zeros_like(a)

在这里插入图片描述

# 全1向量矩阵
tf.ones([2,2,2]), tf.ones_like(a)

在这里插入图片描述

# 全50向量矩阵
tf.fill([3,4],50)

在这里插入图片描述

参数张量

# 正态随机分布
tf.random.normal([2,2])
tf.random.normal([2,2], mean=1,stddev=2)
tf.random.truncated_normal([784, 256], stddev=0.1)

在这里插入图片描述

# 均匀分布
#tf.random.uniform([2,2])
tf.random.uniform([2,2],maxval=10)
#tf.random.uniform([2,2],maxval=100,dtype=tf.int32)

在这里插入图片描述

# 序列
#tf.range(10)
#tf.range(10,delta=2)
tf.range(1,10,delta=2)

在这里插入图片描述

参数张量

# 切片
x = tf.random.normal([2,3,3,2])
x[0]
x[0,:,:,1].shape
x
# 改变维度
x=tf.range(12)
x=tf.reshape(x,[3,4])
x

在这里插入图片描述

# 交换维度
x = tf.random.normal([2,32,32,3])
tf.transpose(x,perm=[0,3,1,2])
# 广播机制
x = tf.random.normal([2,4])
w = tf.random.normal([4,3])
b = tf.random.normal([3])
y = x@w+b
print("x:" ,x)
print("w:" ,w)
print("b:" ,b)
print("y:" ,y)

在这里插入图片描述

基本运算

# 矩阵乘法
a = tf.random.normal([23,32])
b = tf.random.normal([32,2])
a@b, tf.matmul(a, b)
a = tf.random.normal([4,3,23,32])
b = tf.random.normal([4,3,32,2])
a@b
# 乘方
x = tf.range(4)
tf.pow(x,2),tf.square(x)
x**2
tf.sqrt(tf.cast(x,dtype=tf.float32))

拼接

# 合并拼接
a = tf.random.normal([4,35,8]) # 4个班级
b = tf.random.normal([6,35,8]) # 6个班级
tf.concat([a,b],axis=0) # 合并成绩册

a = tf.random.normal([10,35,3]) # 3门课程
b = tf.random.normal([10,35,5]) # 5门课程
tf.concat([a,b],axis=2) # 在科目维度拼接
# 分割样本
x=tf.random.normal([6000,28,28,1])
x_train,x_test=tf.split(x, num_or_size_splits=[4000,2000], axis=0)
x

数据统计

# 向量范数
x = tf.ones([2,2])
#tf.norm(x)
tf.norm(x,ord=4)
#tf.norm(x,ord=3)

在这里插入图片描述

# 概率输出
out = tf.random.normal([2,10])
out = tf.nn.softmax(out, axis=1)
pred = tf.argmax(out, axis=1)
y = tf.random.uniform([2],dtype=tf.int64,maxval=10)
out = tf.equal(pred,y)
out = tf.cast(out, dtype=tf.float32)
correct = tf.reduce_sum(out)

学会了这些基础语法,接下来将进入深度学习,首先进行梯度下降的实战。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值