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

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


tensorflow的基础框架

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

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

1、 数据准备

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

2、 定义placeholder容器

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

tf.placeholder(dtype, shape=None, name=None)

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

例子:

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、 初始化参数/权重

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

w = tf.Variable(<initial-value>, name=<optional-name>)

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

W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')

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

4、 计算预测结果

Y_pred = tf.add(tf.multiply(X, W), b)

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

5、 计算损失函数值

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

loss = tf.square(Y - Y_pred, name='loss')

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

6、 初始化optimizer

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

learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

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

7、 在session里执行graph

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

# 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]) 

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值