1.TensorFlow运行模型–会话(session)
会话拥有并管理TensorFlow程序运行时的所有资源
当所有计算完成之后需要关闭会话帮助系统回收资源
会话的模式1
需要明确调用Session.close()函数来关闭会话并释放资源
当程序因为异常退出时,关闭会话函数可能就不会被执行从而导致资源泄露
利用try-except可以保证程序出现异常时会话正常关掉
会话的模式2
指定默认的会话
TensorFlow不会自动生成默认的会话,需要手动指定
当默认的会话被指定之后可以通过tf.Tensor.eval函数来计算一个张量的取值
在交互式环境下,python脚本或者Jupyter编辑器下,通过设置默认会话来获取张量的取值更加方便
tf.InteractiveSession使用这个函数会自动将生成的会话注册为默认会话
2.常量(constant)
在运行过程中值不会改变的单元,在TensorFlow中无序进行初始化操作
创建语句:constant_name=tf.constant(value)
3.变量(Variable)
在运行过程中值会改变的单元,在TensorFlow中需进行初始化操作
创建语句:name_variable=tf.Variable(value,name)
注意:V是大写字母
个别变量初始化:
init_op=name_variable.initializer()
所有变量初始化:
init_op=tf.global_variables_initializer()
变量赋值
- 与传统的编程语言不同,TensorFlow中的变量定义后,一般无需人工赋值,系统会根据算法模型,训练优化过程中自动调整变量对应的数值。比如在机器学习模型训练时,权重Weight变量w,经过多次迭代,会自动调整
- 特殊情况需要人工更新的,可用变量赋值语句
变量更新语句:
update_op=tf.assign(variable_to_be_updated,new_value)
4.占位符(placeholder) - TensorFlow中的Variable变量类型,在定义时需要初始化,但有些变量定义时并不知道其数值,只有当真正开始运行程序时,才由外部输入,比如训练数据,这时候需要用到占位符
- tf.placeholder占位符,是TensorFlow中特有的一种数据结构,类似动态变量,函数的参数、或者C语言或者Python语言中格式化输出时的“%”占位符
- TensorFlow占位符Placeholder,先定义一种数据,其参数为数据的type和shape
占位符Placeholder的函数接口如下:
tf.placeholder(dtype,shape=None,name=name)
Feed提交数据
如果构建了一个包含placeholder操作的计算图,当在session中调用run方法时,placeholder占用的变量必须通过feed_dict参数传递进去,否则报错
多个操作可以通过一次Feed完成执行
5.tensorboard可视化 - tensorboard是TensorFlow的可视化工具
- 通过TensorFlow程序运行过程中输出的日志文件可视化TensorFlow程序的运行状态
- tensorboard和TensorFlow程序泡在不同的进程中
启动TensorBoard
TensorBoard不需要额外安装,在TensorFlow安装时已自动完成
在Anaconda Prompt中先进入日志存放的目录(非常重要!!!),再运行tensorboard,并将日志的地址指向程序日志输出的地址
命令:tensorboard --logdir=/path/log
注意:启动服务的端口默认为6006;使用–port 参数可以改变启动服务的窗口
生成的日志文件
打开tensorboard
通常将网址输入google chrome浏览器即可看到张量图表。但是也存在输入网址,返回网址拒绝我的请求,只需要在目录后加上“–host=127.0.0.1”即可
tensorboard可视化结果
tensorboard常用API