tensorflow 学习笔记(1)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在这里记录一些tensorflow学习的笔记,视频学习地址:
https://www.bilibili.com/video/BV194411T7BB?p=22

一、tensorflow处理结构

tensorflow是一种声明式编程,
在这里插入图片描述
张量-相当于数据,表示高维数据的抽象。存储节点是变量。placeholder 描述输入数据

二、具体描述

1.张量

张量的阶描述它表示数据的最大维度。
tf中张量表示相同数据类型的多维数组。它是执行操作时候的输入或输出数据。用户通过执行操作来创建或计算张量。··
有两个属性:数据类型和数组形状(各个维度的大小)

几类比较特别的张量(示例):

2 变量

tf.constant //常量,产生的量不能改变
tf.placeholder  //占位符,只是一个壳壳
tf.Variable //变量,使值能保存下来,不会被释放
tf.rank //获得张量的阶数

变量Variable主要作用是维护特定节点的状态,方法是操作,返回值是变量,它是常驻内存
在这里插入图片描述
开始计算的时候在会话

session()

里计算,还需要进行初始化,其使用流程如下:
在这里插入图片描述
更新可以通过创建,初始化获得,也可以通过checkpoint来恢复上一次的值进行更新
saver的使用
在这里插入图片描述
注意:4 5 行代表的意思是一样的。同时在保存变量的方法里面, global_step可以看自己训练的在第几层
保存的变量有index,meta什么的,若要恢复变量用到:

saver.restore(sess,'')
#查看变量:
sess.run(变量名)

3.操作

TF典型的计算和操作归纳
在这里插入图片描述

要注意常量可以直接输入,不需要赋值,比如:

#常量操作
a = tf.constant(2)
b = tf.constant(3)
#创建会话,执行计算操作
with tf.Session() as sess:
    print('a : %i'%sess.run(a))
    print('b : %i'%sess.run(b))
    print('addition with constant:%i'%sess.run(a+b))
    print('multiplication with constant:%i'%sess.run(a*b))
    #常量不需要填充数据,他得值在会话开始的时候已经有了

但是如果用了占位符,不填充数据就会报错,比如:

#占位符操作
x = tf.placeholder(tf.int16 , shape=(),name='x')
y = tf.placeholder(tf.int16 , shape=(),name='y')
#计算操作
add = tf.add(x,y)
mul = tf.multiply(x,y)
#加载默认数据流图
with tf.Session() as sess:
    #不填充数据,直接执行会报错
    print('addition with constant:%i'%sess.run(add))
    print('multiplication with constant:%i'%sess.run(mul))

此时报错为:
InvalidArgumentError: You must feed a value for placeholder tensor ‘x’ with dtype int16
应该修改为:给x y赋值才行

#加载默认数据流图
with tf.Session() as sess:
    #不填充数据,直接执行会报错
    print('addition with constant:%i'%sess.run(add,feed_dict={x : 2, y : 3}))
    print('multiplication with constant:%i'%sess.run(mul,feed_dict={x : 2, y : 3}))

4 会话

会话提供了估算张量和执行操作的运行环境,它是发放计算任务的客户端,所有计算任务都由它链接的执行引擎完成,一个会话的典型使用流程为:
参考文档

Created with Raphaël 2.2.0 创建会话 sess=tf.Session(target=...,graph=...,config=...) 估算张量或执行操作 sess.run() 关闭会话 sess.close()

其中参数的名称和含义为:
target -会话连接的执行引擎,没有赋值时连接本地机器
graph-会话加载的数据流图,默认加载当前定义的数据流图
config:会话启动时的配置项,可以配置数据流图执行当中是否打印日志,是否追踪 信息等等
例子:
在这里插入图片描述
获取张量的另外两种方法:估算张量(Tensor.eval)和执行操作(Operation.run),例子:

import tensorflow as tf
x = tf.placeholder(tf.float32)
w = tf.Variable(1.0)
b = tf.Variable(1.0)
y = w*x +b
with tf.Session() as sess:
    tf.global_variables_initializer().run() #Operation.run
    fetch = y.eval(feed_dict={x:3.0})#tensor.eval 估算张量
    print(fetch)

在这里插入图片描述
tf会话本地执行,创造节点时候指定设备就行:
在这里插入图片描述

5优化器(optimizer)

损失函数,要注意阈值的设置,不要太过追求低损失
在这里插入图片描述
正则化项和惩罚项就是防止模型过拟合:
在这里插入图片描述
优化算法之梯度下降法:
在这里插入图片描述

6 tensorflow训练机制

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值