TensorFlow1深度学习基础(笔记一)

一、TensorFlow框架使用

TensorFlow框架的使用:

1.TensorFlow的结构

2.TensorFlow的各个组件

       图

       会话

       张量

       变量

二、深度学习与机器学习的区别

1.特征提取方面

机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识。

深度学习通常由多个层次组成,他们通常将更简单的模型组合在一起,将数据从一层传递到另一层来构建更复杂的模型。通过训练大量数据自动得出模型,不需要人工特征提取环节。

2.数据量和计算性能要求

机器学习需要执行时间远少于深度学习,深度学习参数往往很庞大,需要通过大量数据的多次优化来训练参数。

3.算法代表

机器学习:朴素贝叶斯、决策树等

深度学习:神经网络

三、TensorFlow结构分析

1.TensorFlow程序通常被组织成一个构建图阶段和一个执行图阶段。

  1. 在构建阶段,数据与操作的执行步骤被描绘成一个圆。(流程图:定义数据(张量Tensor)和操作(节点Op))
  2. 在执行阶段,使用会话执行构建好的图中的操作。(调用各方资源,将定义好的数据和操作运行起来)

图和会话:

图:这是TensorFlow将计算表示为指令之间的依赖关系的一种表示方法

会话:TensorFlow跨一个或多个本地或远程设备之间运行数据流图的机制

张量:TensorFlow中的基本数据对象

节点:提供图当中执行的操作

2.数据流图介绍:

Tensor——张量——数据

Flow——流动

四、图结构

图包含了一组tf.Operation代表的计算单元和tf.Tensor代表的计算单元之间流动的数据。

图相关操作

  1. 默认图

查看默认图的俩种方式:

(1)、调用方法:通过调用tf.get_default_graph()访问,要将操作添加到默认图形中,直接创建OP即可。

(2)、查看属性:op、sess都含有穿啊见图graph属性,默认都在一张图中

  1. 创建图

New_g=tf.Graph()

With new_g.as.default():

定义数据和操作

五、TensorBoard:可视化学习

       1.数据序列化——event文件

              tf.summary.FileWriter(path,graph=sess.graph)

2.启动TensorBoard

              tensorBoard  --logdir=”path”

六、OP

类型

实例

标量运算

add/sub/mul/div/exp/log/greater/less/equal

向量运算

Concat/slice/splot/constant/rank/shape/shuffle

矩阵运算

Matmul/matrixinverse/matrixdateminant

带状态的运算

Variable/assign/assginadd

神经网络的组件

Softmax/sigmoid/relu/convolution/max_pool

存储、恢复

Save/restore

队列及同步运算

Enqueue/dequeue/mutexAcquire/MutexRelease

控制流

Merge/Switch/Enter/Leave/Nextiteration

七、会话

俩种开启方式:

  1. tf.Session:用于完整的程序当中
  2. tf.InteractiveSession:用于交互式上下文中的TensorFlow

会话掌握资源,用完回收资源——tf.Session.close关掉不必要的会话

初始化会话对象时的参数:

       Graph=None

Target:将此参数留空,使用本地计算机,指定网址远程服务器

       Config:tf.ConfigProto以便控制会话的行为

会话的run():

Run(fetches,feed_dict=None,options=None,run_metadata=None)

Fetches:单一的operation,或者列表、元组

八、张量

  1. Type
  2. Shape

张量默认类型tf.float32

创建张量的指令:

固定值张量:

       tf.zeros(shape,dtype=tf.float32,name=None)

       tf.ones(shape,dtype=tf.float32,name=None)

       tf.constant(value,dtype=None,shape=None,name=’Const’)

创建随机张量:

tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)符合正态分布

九、张量的变换

类型的修改:

  1. ndarray.astype(type)

tf.cast(tensor,dtype,name=None)

  1. ndarray.tostring()

形状的修改:

  1. ndarray.reshape(shape)

-1 自动计算形状

  1. ndarray.resize(shape)

静态形状——初始创建张量的形状

tf.set_shape()更新形状未确定的部分

动态形状——tf.reshape(tensor,type)

动态创建新张量时,张量的元素个数必须匹配

十、变量OP

变量的特点:

  1. 存储持久化
  2. 可修改值
  3. 可指定被训练

创建变量:

       tf.Variable(initial_value=None,trainable=True,collectionsNone,name=None)

              initial_value:初始化的值

              trainable:是否被训练

              collections:新变量将添加到列出的图的集合中collections

初始化变量:

Init=tf.global_variables_initializer()

运行初始化变量:

Sess.run(init)

使用tf.variable_scope()修改变量的命名空间

十一、API

基础API

  1. Tf.app:相当于TensoeFlow进行的脚本提供一个main函数入口
  2. Tf.image:图像处理操作
  3. Tf.gfile:提供一组文件操作的函数
  4. Tf.summary:用于生成TensorBoard可用的统计日志
  5. Tf.python_io:读写TFRecords文件
  6. Tf.train:提供训练器,与tf.nn组合,实现网络优化计算
  7. Tf.nn:神经网络的底层函数

高级API

  1. Tf.keras:独立的深度学习库
  2. Tf.layers:
  3. Tf.contrib:
  4. Tf.estimator:相当于Model+training+Evaluate的合体

十二、线性回归

(1)、构建模型

              Y=w1*x1+w2*x2+…+wn*xn+b

(2)、构造损失函数

              均方误差

(3)、优化损失

              梯度下降

线性回归的训练流程分析:

(1)、准备样本

(2)、构建模型

              Y_predict=tf.matmul(x,weights)+bias

(3)、构造损失函数

              Error=tf.reduce_mean(tf.square(y_predict-y_true))

(4)、优化损失

Optimizer=Tf.train.GradientDescentOptimizer(learning_rate=0.01).mininize(error)

十三、增加其他功能

  1. 增加变量显示

(1)、收集变量

        Tf.summary.scalar(name=’’,tensor)收集对于损失函数和准确率等单值变换

              Tf.summary.histogram(name=’’,tensor)收集高维度的变量参数

              Tf.summary.image(name=’’,tensor)收集输入的图片张量能显示图片

       (2)、合并变量写入事件

              Merged=tf.summary.merge_all()

              运行合并:summary=sess.run(merged) 每次迭代都需运行

              添加:FileWriter.add_summary(summary,i) i表示第几次的值

       流程:

  1. 创建事件文件
  2. 收集变量
  3. 合并变量
  4. 每次迭代运行一次合并变量
  5. 每次迭代将summary 对象写入事件文件
  6. 增加命名空间

Tf.variable_scope()

  1. 模型的保存于加载

Tf.train.Saver(var_list=None,max_to_keep=5)

  1. 实例化Saver
  2. 保存         saver.save(sess,path.ckpt)
  3. 加载         saver.restore(sess,path.ckpt)
  1. 命令行参数使用

(1)、tf.app.flags

        Tf.app.flags.DEFINE_integer(“max_step”,0,”训练模型的步骤”)

              Tf.app.flags.DEFINE_string(“model_dir”,” ”,”模型保存的路径+模型名字”)

(2)、FLAGS=tf.app.flags.FLAGS

              通过FLAGS.max_step调用命令行中传过来的参数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值