TensorFlow基础

本文深入探讨了深度学习在模式识别领域的应用,特别是在图像、声音、语音和语言处理中的表现。介绍了TensorFlow这一强大工具,它是如何在谷歌的众多产品中发挥关键作用,并详细解析了TensorFlow的工作原理、结构和API。文章还提供了创建和运行计算图的实例代码。
部署运行你感兴趣的模型镜像

深度学习在模式识别方向,尤其是在图像、声音、语音、语言和时间序列数据上表现出色。运用深度学习,你可以对数据进行分类、预测、聚类以及特征提取。2015年11月,谷歌发布了TensorFlow。TensorFlow在谷歌的大多数产品,比如谷歌搜索、垃圾邮件检测、语音识别、谷歌助手、谷歌即时桌面以及谷歌相册中得到了运用。

TensorFlow具有实施部分子图计算的独特功能,因此可以通过分割神经网络的方式进行分布式训练。换句话说,就是TensorFlow允许模型并行和数据并行。TensorFlow提供了多种API。最低阶的API——TensorFlow Core——可以提供完整的编程控制。

关于TensorFlow要注意以下几点:

  • 图是对于计算的一种描述。
  • 图包含作为操作的节点。
  • 在一个给定的会话语境中执行计算。
  • 对于任何计算过程而言,图一定是在一个会话里启动。
  • 会话将图操作加载到像CPU或者GPU这样的设备上。
  • 会话提供执行图操作的方法。
TensorFlow结构

在这里插入图片描述

对于安装,请访问官方教程https://www.tensorflow.org/install/

张量

张量是TensorFlow中的基本数据单元。张量是一个数学对象,他是对标量、向量和矩阵的泛化。张量可以表示为一个多维数组。零秩(阶)张量就是标量。向量或者数组就是秩为1的张量,而矩阵是秩为2的张量。简言之,张量可被认为是一个n维数组。
下面是一些张量的例子:

张量解释
5秩为0的张量,这是一个形状为[]的标量
[2.,5.,3.]秩为1的张量,这是一个形状为[3]的向量
[[1.,2.,3.],[4.,5.,6.]]秩为2的张量,这是一个形状为[2,3]的矩阵
[[[1.,2.,3.],[7.,8.,9.]]]秩为3的张量,其形状为[2,1,3]

计算图与会话

TensorFlow因其TensorFlow Core程序而受欢迎,TensorFlow Core有两个主要作用:

  • 在构建阶段建立计算图
  • 在执行阶段运行计算图

我们来看一下TensorFlow是如何工作的:

  • 其程序通常被结构化为构建阶段和执行阶段。
  • 构建阶段搭建具有节点(操作)和边(张量)的图。
  • 执行阶段使用会话来执行图中操作。
  • 最简单的操作是一个常数,它没有输入,只是传递输出给其它计算操作。
  • 一个操作的例子就是乘法(或者是取两个矩阵作为输入并输出另一个矩阵的加法或减法操作)。
  • TensorFlow库具有一个默认图来给构建操作添加节点。

计算图是由一系列的TensorFlow操作排成的节点组成的。
计算图定义了计算。它并不执行计算,也不保留任何值。它用来定义代码中提及的操作。同时,创建了一个默认的图。因此,你不必创建图,除非需要创建图用于多种目的。

会话允许你执行图或者只执行部分图。他为执行分配资源(在一个或多个CPU或者GPU上),他还保留了中间结果和中间变量值。

在TensorFlow中创建的变量的值,只在一个会话内是有效的。如果你尝试在之后的第二个会话里访问其值,就会报错,因为变量不是在那里初始化的。

想运行任何操作,需要给图创建一个会话,会话会分配内存来存储当前变量值。

演示代码:

import tensorflow as tf
sess = tf.Session()

#创建一个新的图,不是默认的图
myGraph = tf.Graph()
with myGraph.as_default():
    variable = tf.Variable(30,name="navin")
    initialize = tf.global_variables_initializer()

with tf.Session(graph=myGraph) as sess:
    sess.run(initialize)
    print(sess.run(variable))

运行结果:
运行结果

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### TensorFlow 基础 API 文档与教程 #### 获取并安装 TensorFlow 为了使用 TensorFlow基础 API,首先需要确保已正确安装 TensorFlow 库。可以通过 pip 工具来完成安装操作: ```bash pip install tensorflow ``` 对于希望利用 GPU 加速计算环境的开发者来说,则需特别注意版本兼容性以及驱动程序的要求。 #### 导入 TensorFlow 模块 成功安装之后,在 Python 脚本或交互环境中导入 TensorFlow 是必不可少的第一步[^4]: ```python import tensorflow as tf ``` 这一步骤使得后续可以方便地调用 TensorFlow 提供的各种功能函数和类定义。 #### 使用常量与变量 TensorFlow 中的数据主要以张量的形式存在。创建一个简单的常量可以直接通过 `tf.constant` 函数实现: ```python hello_world = tf.constant('Hello, TensorFlow!') print(hello_world.numpy()) # 输出: Hello, TensorFlow! ``` 而当涉及到模型参数或其他可能变化的数据时,则应该考虑使用变量 Variable 来表示它们。Variable 对象允许被更新,并且能够自动追踪梯度信息以便于反向传播过程中的优化处理。 ```python w = tf.Variable([0.5], dtype=tf.float32) b = tf.Variable([-0.7], dtype=tf.float32) # 更新 w 和 b 的值 w.assign_add(0.1) b.assign_sub(0.1) ``` #### 构建简单线性回归模型 构建机器学习模型通常涉及定义前向传播路径(即如何从输入得到预测输出)。下面是一个非常基础的例子——单特征线性回归模型的搭建方式: ```python def linear_model(x): return w * x + b ``` 这里假设权重 \(w\) 和偏置项 \(b\) 都已经被初始化为 Variables 类型的对象;给定任意实数类型的输入 \(x\) 后即可获得相应的估计结果。 #### 计算损失函数 为了让模型学会调整内部参数从而更好地拟合数据集,还需要引入衡量误差大小的标准—损失函数 Loss Function。均方差 MSE (Mean Squared Error) 就是一种常用的选择之一: ```python loss_function = lambda y_true, y_pred: tf.reduce_mean(tf.square(y_true - y_pred)) ``` 此表达式接收真实标签值 `y_true` 及由上述线性组合产生的预测得分 `y_pred` ,返回两者之间差异平方平均值得到最终评估指标 score。 #### 执行训练循环 最后便是反复迭代整个流程直至收敛的过程了。每次读取一批次样本点喂给网络做正向推理的同时记录下当前时刻累积下来的总代价 cost 。接着借助选定好的最优化算法 Optimize Algorithm (比如随机梯度下降 SGD 或 Adam),依据链式法则 Chain Rule 自动求导机制推导出各层节点关于目标函数敏感程度的变化趋势 gradient 并据此修正连接权系数 weights 。 ```python optimizer = tf.optimizers.Adam() for epoch in range(num_epochs): with tf.GradientTape() as tape: predictions = linear_model(features) loss_value = loss_function(labels, predictions) gradients = tape.gradient(loss_value, [w,b]) optimizer.apply_gradients(zip(gradients,[w,b])) ``` 以上就是基于 TensorFlow 实现的一个完整的端到端工作流概述[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值