TensorFlow入门(一)——了解和运行 TensorFlow

TensorFlow是一个采用数据流图,用于数值计算的开源软件库。它不仅适用于机器学习和深度神经网络,还可以应用于广泛的计算领域。该工具具备高度灵活性、真正的可移植性、自动求微分等特点,能够支持多语言,并实现性能最优化。

关于 TensorFlow

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

什么是数据流图(Data Flow Graph)?

数据流图用“结点”(nodes)“线”(edges)有向图来描述数学计算。

  • “节点” 一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。
  • “线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。

这里写图片描述

TensorFlow的特征

  • 高度的灵活性:
    TensorFlow 不是一个严格的“神经网络”库。只要你可以将你的计算表示为一个数据流图,你就可以使用Tensorflow。

  • 真正的可移植性(Portability):
    Tensorflow可以运行在台式机、服务器、手机移动等等设备上。而且它可以充分使用计算资源,在多CPU和多GPU上运行。

  • 自动求微分:
    基于梯度的机器学习算法会受益于Tensorflow自动求微分的能力。只需要定义预测模型的结构,将这个结构和目标函数(objective function)结合在一起,并添加数据,Tensorflow将自动计算相关的微分导数。

  • 多语言支持:
    Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs。

  • 性能最优化:
    Tensorflow 给予了线程、队列、异步操作等以最佳的支持,可以硬件的计算潜能全部发挥出来。

第一行TensorFlow代码
Python API 撰写的 TensorFlow 示例代码:这段很短的 Python 程序生成了一些三维数据, 然后用一个平面拟合它。

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

# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300

# 构造一个线性模型
# 
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b

# 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

# 初始化变量
init = tf.initialize_all_variables()

# 启动图 (graph)
sess = tf.Session()
sess.run(init)

# 拟合平面
for step in range(201):
    sess.run(train)
    if step % 20 == 0:
        print(step,sess.run(W),sess.run(b))     

# 得到最佳拟合结果 W: [[0.100  0.200]], b: [0.300]

这里写图片描述

使用TensorFlow构建神经网络的入门教程可从以下几个方面展开: ### 深度学习基础概念 深度学习包含自动特征提取、层次化表示、大规模数据处理等基本概念,了解这些概念有助于理解神经网络的工作原理优势 [^2]。 ### TensorFlow基本使用 需要掌握TensorFlow的基本元素,如张量、计算图会话。张量是TensorFlow中的基本数据结构,计算图定义了操作之间的依赖关系,会话则用于执行计算图 [^2]。 ### 构建神经网络的主要步骤 结合TensorFlow_PlayGround示例,使用神经网络解决分类问题主要有4个步骤:提取问题中实体的特征向量作为神经网络的输入;定义神经网络结构,并定义如何从神经网路的输入得到输出;通过训练数据来调整神经网络中参数的值;使用神经网络来预测未知的数据 [^3]。 ### 用TensorFlowKeras构建简单神经网络 #### 主要步骤 包括数据准备、模型构建、编译、训练、评估预测,还涉及模型保存与加载,即如何保存训练好的模型,并在需要时加载使用 [^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 理解训练过程中的Epochsbatches概念,合理设置相关参数 [^1]。 #### 层函数 了解不同层函数的作用使用方法,如`Flatten`、`Dense`等 [^1][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值