前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tensorflow | 重新学习 | 了解graph 和 Session

tensorflow | 重新学习 | 了解graph 和 Session

作者头像
努力在北京混出人样
发布2018-05-14 14:38:11
1K0
发布2018-05-14 14:38:11
举报
文章被收录于专栏:祥子的故事祥子的故事

源于工作需要,重新学习tensorflow,好久未使用,忘记的差不多了。


tensorflow的基础框架

tensorflow中是由Graph和Session组成,Graph负责将计算架构搭建起来,Session则负责将数据输入、执行模型、产出结果。分工明确,严格分割开来。

其中,Graph和Session过程也可以细分为一下几个部分:

1、 数据准备

这部分是最起始的部分,将数据集从磁盘读取

2、 定义placeholder容器

placeholder用于存储变量,自变量和因变量。定义如下:

代码语言:javascript
复制
tf.placeholder(dtype, shape=None, name=None)

dtype :定义数据类型; shape:定义维度; name:定义名称。

例子:

代码语言:javascript
复制
batch_size = 128
X = tf.placeholder(tf.float32, [batch_size, 784], name='X_placeholder') 
Y = tf.placeholder(tf.int32, [batch_size, 10], name='Y_placeholder')

3、 初始化参数/权重

这部分是定义权重变量,模型中涉及到的参数需要提前定义。

代码语言:javascript
复制
w = tf.Variable(<initial-value>, name=<optional-name>)

包含初始化值和命名两部分。 例子:

代码语言:javascript
复制
W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')

Wb就是定义的参数 更加深入的研究Variable请看Variable帮助文档

4、 计算预测结果

代码语言:javascript
复制
Y_pred = tf.add(tf.multiply(X, W), b)

通过估计的参数来计算预测值

5、 计算损失函数值

为了估计模型的参数,一般通过定义损失来估计。

代码语言:javascript
复制
loss = tf.square(Y - Y_pred, name='loss')

当然,根据自己数据来定义损失函数最为恰当,这里仅仅给出案例。

6、 初始化optimizer

前面的定义了模型的结果,这部做模型求解。常用的求解算法有很多,要结合自己的数据来定义。通过情况下,我们需要提前定义学习率。

代码语言:javascript
复制
learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

这里是使用梯度下降法来优化模型,损失函数最小。

7、 在session里执行graph

首先,定义迭代次数或迭代停止条件。

代码语言:javascript
复制
# xs是指输入的数据
n_samples = xs.shape[0]
with tf.Session() as sess:
    # 初始化所有变量
    sess.run(tf.global_variables_initializer()) 
    # 记录日志
    writer = tf.summary.FileWriter('./graphs/linear_reg', sess.graph)  

    # 训练模型,这里定义训练50次
    for i in range(50):
        total_loss = 0
        for x, y in zip(xs, ys):
            # 通过feed_dic把数据灌进去
            _, l = sess.run([optimizer, loss], feed_dict={X: x, Y:y}) 
            total_loss += l
        if i%5 ==0:
            print('Epoch {0}: {1}'.format(i, total_loss/n_samples))

    # 关闭writer
    writer.close() 

    # 取出w和b的值
    W, b = sess.run([W, b]) 

这样就可以运行了,同时将最后的参数打印出来。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年12月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • tensorflow的基础框架
    • 1、 数据准备
      • 2、 定义placeholder容器
        • 3、 初始化参数/权重
          • 4、 计算预测结果
            • 5、 计算损失函数值
              • 6、 初始化optimizer
                • 7、 在session里执行graph
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档