[深度学习]-初识 TensorFlow (Python)

这篇博客介绍了 TensorFlow 的基础知识,包括图与会话的概念,如何创建和管理图,以及变量的生命周期。文章通过实现线性回归模型,详细解释了梯度下降的计算过程,包括手动计算、自动求导和使用优化器。此外,还展示了如何使用 Mini-batch 梯度下降、TensorBoard 进行可视化,并探讨了命名空间、模块化和变量共享的方法。
摘要由CSDN通过智能技术生成

综述

TensorFlow 是一个编程系统, 使用图来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op 获得 0 个或多个 Tensor, 执行计算, 产生 0 个或多个 Tensor. 每个 Tensor 是一个类型化的多维数组. 例如, 你可以将一小组图像集表示为一个四维浮点数数组, 这四个维度分别是 [batch, height, width, channels].

一个 TensorFlow 图描述了计算的过程. 为了进行计算, 图必须在 会话 里被启动. 会话 将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法. 这些方法执行后, 将产生的 tensor 返回. 在 Python 语言中, 返回的 tensor 是 numpy ndarray 对象; 在 C 和 C++ 语言中, 返回的 tensor 是 tensorflow::Tensor 实例.

基本概念:

  • 使用图 (graph) 来表示计算任务.
  • 在被称之为 会话 (Session)上下文 (context) 中执行图.
  • 使用 tensor 表示数据.
  • 通过 变量 (Variable) 维护状态.
  • 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据.

官方安装指南

图与会话

创建图,执行会话

以下代码创建了图:

import tensorflow as tf

x = tf.Variable(5, name='x')
y = tf.Variable(2, name='y')
f = x*x*y + y + 10

上边的代码创建了计算图,但是 没有 执行计算。计算这个图,需要打开一个 TensorFlow Session ,然后使用它来初始化变量以及计算 f:

sess = tf.Session()
sess.run(x.initializer)
sess.run(y.initializer)
print(sess.run(f))
sess.close()

如果变量很多,会使得 sess.run() 多次出现。所以,我们使用 with 块来设置默认session:

with tf.Session() as sess:
    x.initializer.run()  # equivalent to tf.get_default_session().run(x.initializer)
    y.initializer.run()
    retsult = f.eval()  # equivalent to calling tf.get_default_session().run(f)
    print(retsult)
    sess.close()

上边的代码手动去初始化了各个变量。我们也可以使用 global_variables_initializer() 来初始化所有变量(不会立即执行初始化):

init = tf.global_variables_initializer()

with tf.Session() as sess:
    init.run()
    retsult = f.eval()
    print(retsult)
    sess.close()

管理图

上边的代码都是使用默认图,如果需要在独立的图里边执行代码,可以自行创建图:

import tensorflow as tf

x1 = tf.Variable(1)
print(x1.graph is tf.get_default_graph())  # True

graph = tf.Graph()  # 独立的 Graph
with graph.as_default():
    x2 = tf.Variable(2)
print(x2.graph is tf.get_default_graph())  # False

Node 的存活周期

变量的存活开始于其初始化,结束于会话结束:

import tensorflow as tf


w = tf.constant(3)
x = w + 2
y = x + 3
z = x + 4

# 计算 w 、 x 两次
with tf.Session() as sess:
    print(y.eval())
    print(z.eval())
    sess.close()

# 计算 w 、 x 一次
with tf.Session() as sess:
    y_eval, z_eval = sess.run([y, z])
    print(y_eval)
    print(z_eval)
    sess.close()

示例:使用TensorFlow实现线性回归

θ 等式计算

线性回归的计算我们使用:

θ=(XTX)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值