tensorflow零起点快速入门(2)
指定设备与矩阵乘法
使用tf.device("/gpu:0")用于指定设备进行运算。
在使用jupyter notebook的时候,可能会出现使用异常,需要使用config=tf.ConfigProto(allow_soft_placement=True)来处理。
该运行结果为12。属于叉乘。点乘使用另外的multiply。
config=tf.ConfigProto(allow_soft_placement=True)
with tf.Session(config=config) as sess:
with tf.device("/gpu:0"):
matrix1=tf.constant([[3,3]])
matrix2=tf.constant([[2],[2]])
product=tf.matmul(matrix1,matrix2)
result=sess.run(product)
print(result)
建立简单的张量流图计算

图为上述。cnt+a得到y,y通过assign赋值给cnt。
运行过程中,初始化变量后,通过每次运行assign,即完成了输出效果:1,2,3
config=tf.ConfigProto(allow_soft_placement=True)
cnt=tf.Variable(0,name="cnt")
a=tf.constant(1,name="a")
y=tf.add(cnt,a)
y2=tf.assign(cnt,y)
init=tf.initialize_all_variables()
with tf.Session(config=config) as ss:
ss.run(init)
xss=ss.run(cnt)
for xc in range(3):
ys2=ss.run(y2)
print(ys2)
xsum=tf.summary.FileWriter(".",ss.graph)
点乘数据
可以使用一维,二维,等进行点乘,只要数据对应即可。使用feed_dict进行数据输入。run后的返回值即为数据输出。
a=tf.placeholder(tf.float32,name='ta')
b=tf.placeholder(tf.float32,name='tb')
c=tf.multiply(a,b,name='tc')
config=tf.ConfigProto(allow_soft_placement=True)
init=tf.initialize_all_variables()
with tf.Session(config=config) as ss:
ss.run(init)
xss=ss.run([c],feed_dict={a:[7,2],b:[2,2]})
print(xss)
xsum=tf.summary.FileWriter(".",ss.graph)
也可写成如下形式:将变量分离出来定义。
a=tf.placeholder(tf.float32,name='ta')
b=tf.placeholder(tf.float32,name='tb')
c=tf.multiply(a,b,name='tc')
config=tf.ConfigProto(allow_soft_placement=True)
init=tf.initialize_all_variables()
a_data=[[1,2,3],[4,5,6]]
b_data=[[2,3,4],[5,6,7]]
with tf.Session(config=config) as ss:
ss.run(init)
xss=ss.run([c],feed_dict={a:a_data,b:b_data})
print(xss)
xsum=tf.summary.FileWriter(".",ss.graph)
run过程的一些写法
书写过程中,可以使用中括号,然后输出(本次输出为【7,21】)
a=tf.constant(3,name='ta')
b=tf.constant(2,name='tb')
c=tf.constant(5,name='tc')
m1=tf.add(b,c,name='m1')
m2=tf.multiply(a,m1,name='m2')
config=tf.ConfigProto(allow_soft_placement=True)
with tf.Session(config=config) as ss:
xss=ss.run([m1,m2])
print(xss)
xsum=tf.summary.FileWriter(".",ss.graph)
也可以如下所代表的批量输出:
y2,w2,l2=ss.run(y),ss.run(w),ss.run(loss)
构建单神经元的神经网络
y=w*x
loss=(y-y_)^2
使用学习率为0.025的梯度下降,最小化loss。
定义完模型后,通过tf.summary.scalar控制tensorboard输出scalar数据图,显示数据的变化情况。
然后进行运算,最终的结果,通过saver=tf.train.Saver()的一些方法保存模型(训练后的模型)
w=tf.Variable(0.8,name='weight')
x=tf.constant(2.0,name='input')
y=tf.multiply(w,x,name='output')
y_=tf.constant(0.0,name='correct_value')
loss=tf.pow(y-y_,2,name='loss')
train_step=tf.train.GradientDescentOptimizer(0.025).minimize(loss) with tf.name_scope('summar'):
for value in [x,w,y,y_,loss]:
tf.summary.scalar(value.op.name,value)
#tf.summary.histogram('histogram',w)
#tf.summary.histogram('loss',loss)
summaries=tf.summary.merge_all() config=tf.ConfigProto(allow_soft_placement=True)
init=tf.initialize_all_variables() with tf.Session(config=config) as ss:
xsum=tf.summary.FileWriter(".",ss.graph)
xss=ss.run(init)
for i in range(100):
x_data=ss.run(summaries)
xsum.add_summary(x_data,i)
x_data=ss.run(train_step)
y2,w2,l2=ss.run(y),ss.run(w),ss.run(loss)
print(i,' ',y2,' ',w2,' ',l2,' ')
saver=tf.train.Saver()
saver.save(ss,'tmp/.')


构建的张量图如上,点击其中的一些空心圆,可以查看其数值,操作,在gradient模块中,点开可以看到内部详细的结构。
通过上述代码,在summer中归并了一些scalar图如下:

在迭代100次后,输出为:

模型保存读取
参阅:https://blog.csdn.net/Tan_HandSome/article/details/79303269
认为有两个文件保存,一个是meta文件保存模型,一个是checkpoint文件保存变量。至于其他文件的更新和变动还没有考虑。
下面一例:
使用w4=w3*b1
其中w3=w1+w2
实际保存的模型是这样,实际保存的变量,除掉placeholder占位符,只有b1=2一个值。
import tensorflow as tf
#Prepare to feed input, i.e. feed_dict and placeholders
w1 = tf.placeholder("float", name="w1")
w2 = tf.placeholder("float", name="w2")
b1= tf.Variable(2.0,name="bias")
feed_dict ={w1:4,w2:8}
#Define a test operation that we will restore
w3 = tf.add(w1,w2)
w4 = tf.multiply(w3,b1,name="op_to_restore")
sess = tf.Session()
sess.run(tf.global_variables_initializer())
#Create a saver object which will save all the variables
saver = tf.train.Saver()
#Run the operation by feeding input
print(sess.run(w4,feed_dict))
#Prints 24 which is sum of (w1+w2)*b1
#Now, save the graph
saver.save(sess, './save/my_test_model',global_step=1000)
另外开一个程序,运行如下:
因为b1保存了,所以这里占位符输入了13,17,然后计算的结果就是30*2了。
import tensorflow as tf
sess=tf.Session()
#First let's load meta graph and restore weights
saver = tf.train.import_meta_graph('my_test_model-1000.meta') saver.restore(sess,tf.train.latest_checkpoint('./')) # Now, let's access and create placeholders variables and
# create feed-dict to feed new data
graph = tf.get_default_graph()
w1 = graph.get_tensor_by_name("w1:0")
w2 = graph.get_tensor_by_name("w2:0")
feed_dict ={w1:13.0,w2:17.0}
#Now, access the op that you want to run.
op_to_restore = graph.get_tensor_by_name("op_to_restore:0")
print(sess.run(op_to_restore,feed_dict))
#This will print 60 which is calculated
#using new values of w1 and w2 and saved value of b1.
tensorflow零起点快速入门(2)的更多相关文章
- tensorflow零起点快速入门(3)
创造并运行数据 创造了-3到3的32条数据,然后通过sess.run获取并显示输出数据. x=tf.linspace(-3.0,3.0,32) print(x) sess=tf.Session() r ...
- tensorflow零起点快速入门(1)
导入: 其中的TF_CPP_MIN_LOG_LEVEL据说是为了忽略警告,但是我这里没有意义(numpy的一些警告) import tensorflow as tf import os os.envi ...
- tensorflow零起点快速入门(5) --强化学习摘录截图
tf.random_normal_initializer tf的GraphKeys用法 tf.reduce_mean tf.squared_difference 非tf中的zip,python的zip ...
- tensorflow零起点快速入门(4) --入门常用API
tf.reduce_mean https://blog.csdn.net/he_min/article/details/78694383 计算均值,全部数字的均值,纵向一维的均值,横向一维的均值 tf ...
- TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN
原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...
- 序言 - PHP零基础快速入门
我为什么要写<PHP零基础快速入门>? 原因: PHP 真心简单,适合零基础的人快速入门掌握,身边的人学习一两周上手开发的比比皆是: 市面上的文章或书籍对初学者并不友好,多半枯燥乏味,我相 ...
- 零基础快速入门web学习路线(含视频教程)
下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...
- 零基础快速入门SpringBoot2.0 (一)
零基础快速入门SpringBoot2.0 (一) 一.SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 1.依赖版本jdk8以上, Spr ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_1、SpringBoot2.x课程介绍和高手系列知识点
1 ======================1.零基础快速入门SpringBoot2.0 5节课 =========================== 1.SpringBoot2.x课程全套介绍 ...
随机推荐
- 包与类的命名 - service tool util 区别
包与类的命名和定位时,service tool util 常常搞混淆,在此分析一下它们的定位: 名称 特点与定位 独立性 方法和类的属性 util 通用的.与业务无关的,可以独立出来,可供其他项目使用 ...
- 2018-2019-2 20175227张雪莹《Java程序设计》实验四 《Android程序设计》
2018-2019-2 20175227张雪莹<Java程序设计> 实验四 <Android程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...
- webstorm设置babel,使用es6
原文链接:https://blog.csdn.net/peade/article/details/76522177 网上有很多关于如何设置babel的.我学习着设置,但总差那么几步,没能满足我的需求. ...
- 在windows系统搭建并运行一个Flutter项目
搭建Flutter之前需要已经安装好相应的Flutter开发环境,如果没安装好相应环境的可以查看在windows系统搭建Flutter开发环境 搭建Flutter项目可以通过命令行搭建,或者通过and ...
- antd源码分析之——标签页(tabs 3.Tabs的滚动效果)
由于ant Tabs组件结构较复杂,共分三部分叙述,本文为目录中第三部分(高亮) 目录 一.组件结构 antd代码结构 rc-ant代码结构 1.组件树状结构 2.Context使用说明 3.rc-t ...
- Python 寻找文件夹里以特定格式结尾的文件
代码: import os, re, time name = 'linuxday01' flags = True# 文件夹bi_test中的文件列表 print os.listdir('E:\\bi_ ...
- 设置Fedora能够使用root用户登录
1. 切换到root工作环境,因为一下操作必须拥有root权限 [ha@localhost ~]$ su root密码: 2. 编辑/etc/pam.d/gdm [root@localhost ha] ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_汇总
2018年Spring Boot 2.x整合微信支付在线教育网站高级项目实战视频课程 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在 ...
- python用cx_Oracle连接oracle
确认版本: oracle版本:64位 python版本:64位 下载cx_Oracle的whl包:64位 安装whl包:pip install wheel cd到下载路径安装cx_Oracle的whl ...
- R语言常用包简介