TensorFlow入门(二)——基本用法

TensorFlow:

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

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 实例。

计算图

TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段。在构建阶段, op 的执行步骤 被描述成一个图。在执行阶段, 使用会话执行执行图中的 op。

例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op。

TensorFlow 支持 C, C++, Python 编程语言。目前, TensorFlow 的 Python 库更加易用, 它提供了大量的辅助函数来简化构建图的工作, 这些函数尚未被 C 和 C++ 库支持。

三种语言的会话库 (session libraries) 是一致的。

构建图

构建图的第一步, 是创建源 op (source op)。源 op 不需要任何输入, 例如 常量 (Constant)。源 op 的输出被传递给其它 op 做运算。

Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入。

TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点。 这个默认图对 许多程序来说已经足够用了。

#!/usr/bin/env python3
import tensorflow as tf

#创建一个常量op,产生一个2×3矩阵
#这个op被作为一个节点加到默认图中
#
#构造器的返回值代表该常量op的返回值
matrix1 = tf.constant([[5.,3.,2.],[1.,2.,3.]])

#创建另一个常量op,产生一个3×4矩阵
matrix2 = tf.constant([[2.,1.,3.,4.],[2.,1.,3.
使用TensorFlow构建神经网络的入门教程可从以下几个方面展开: ### 深度学习基础概念 深度学习包含自动特征提取、层次化表示、大规模数据处理等基本概念,了解这些概念有助于理解神经网络的工作原理和优势 [^2]。 ### TensorFlow基本使用 需要掌握TensorFlow基本元素,如张量、计算图和会话。张量是TensorFlow中的基本数据结构,计算图定义了操作之间的依赖关系,会话则用于执行计算图 [^2]。 ### 构建神经网络的主要步骤 结合TensorFlow_PlayGround示例,使用神经网络解决分类问题主要有4个步骤:提取问题中实体的特征向量作为神经网络的输入;定义神经网络结构,并定义如何从神经网路的输入得到输出;通过训练数据来调整神经网络中参数的值;使用神经网络来预测未知的数据 [^3]。 ### 用TensorFlow和Keras构建简单神经网络 #### 主要步骤 包括数据准备、模型构建、编译、训练、评估和预测,还涉及模型保存与加载,即如何保存训练好的模型,并在需要时加载使用 [^2]。 #### 简单例子 以分类MNIST数据集中的手写数字为例,使用Keras(TensorFlow的高级API)构建一个简单的全连接(密集)神经网络。定义一个三层结构,输入层、隐藏层和输出层。输入层为展平的28×28的图像像素输入,隐藏层有128个神经元,输出层有10个神经元,代码如下 [^1][^4]: ```python import tensorflow as tf from tensorflow import keras # 定义一个三层结构,输入层,隐藏层,输出层 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), # 图片为28×28格式 keras.layers.Dense(128, activation=tf.nn.relu), # 隐藏层有128个神经元,这个数字是自己定的 keras.layers.Dense(10, activation=tf.nn.softmax) # 10指的输出有10个类别,10个神经元 ]) ``` ### 可选实验室操作 #### 导入第三方库 在开始构建模型前,需要导入必要的第三方库 [^1]。 #### 数据集 选择合适的数据集,如MNIST数据集,并进行数据准备 [^1]。 #### 归一化数据 对数据进行归一化处理,有助于提高模型的训练效果 [^1]。 #### TensorFlow模型 构建TensorFlow模型,定义好模型的结构和参数 [^1]。 #### 预测 使用训练好的模型对未知数据进行预测 [^1]。 #### Epochs and batches 理解训练过程中的Epochs和batches概念,合理设置相关参数 [^1]。 #### 层函数 了解不同层函数的作用和使用方法,如`Flatten`、`Dense`等 [^1][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值