前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tensorflow零起点快速入门(2)

tensorflow零起点快速入门(2)

作者头像
嘘、小点声
发布2019-11-20 17:14:47
4840
发布2019-11-20 17:14:47
举报
文章被收录于专栏:嘘、小点声嘘、小点声

指定设备与矩阵乘法

使用tf.device("/gpu:0")用于指定设备进行运算。

在使用jupyter notebook的时候,可能会出现使用异常,需要使用config=tf.ConfigProto(allow_soft_placement=True)来处理。

该运行结果为12。属于叉乘。点乘使用另外的multiply。

代码语言:javascript
复制
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

代码语言:javascript
复制
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后的返回值即为数据输出

代码语言:javascript
复制
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)

也可写成如下形式:将变量分离出来定义。

代码语言:javascript
复制
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】)

代码语言:javascript
复制
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)

也可以如下所代表的批量输出:

代码语言:javascript
复制
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()的一些方法保存模型(训练后的模型)

代码语言:javascript
复制
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次后,输出为:

模型读取

大致是这样,只是有时候会因为变量不匹配无法读取

使用Saver时候,需要先把变量设置好,可能会有NotFoundError

代码语言:javascript
复制
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)
config=tf.ConfigProto(allow_soft_placement=True)
init=tf.initialize_all_variables()
with tf.Session(config=config) as ss:
    xss=ss.run(init)
    saver=tf.train.Saver()
    saver.restore(ss,'tmp/.')
    print(ss.run(loss))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 指定设备与矩阵乘法
  • 建立简单的张量流图计算
  • 点乘数据
  • run过程的一些写法
  • 构建单神经元的神经网络
  • 模型读取
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档