TensorFlow 教程 - 新手入门笔记

TensorFlow新手入门笔记(1)——环境配置 TensorFlow新手入门笔记(1)——环境配置 Windows虚拟机环境——VMware Workstation Pro 14.1.1 系统——Ubuntu16.04 Python版本——Python2.7 TensorFlow版本——TensorFlow1.3.0 一、虚拟机下载安装 直接官网下载即可(需要用邮箱注册一个账号),链接:VMware下载链接 安装完后需要激活,激活码百度即... 阅读详情

介绍

TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。它是谷歌基于DistBelief进行研发的第二代人工智能学习系统。2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源。

TensorFlow名字的来源

其命名来源于本身的原理,Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算。Tensorflow运行过程就是张量从图的一端流动到另一端的计算过程。张量从图中流过的直观图像是这个工具取名为“TensorFlow”的原因。

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

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

流图

Tensorflow的特性

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

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

  • 多语言支持:Tensorflow提供了一套易用的Python使用接口来构建和执行graphs,也同样提供了一套易于C++使用的接口(目前训练神经网络只支持python,C++接口只能使用已经训练好的模型)。未来还会支持Go、Java、Lua、Javascript、R等等。

  • 性能最优化:TensorFlow给予了线程、队列、异步操作等最佳的支持,TensorFlow可以把你手边硬件的计算潜能全部发挥出来,它可以充分利用多CPU和多GPU。

下载及安装

既可以直接使用二进制程序包也可以从github源码库克隆源码编译安装。

要求
TensorFlow 提供的Python API支持Python2.7和Python3.3+

GPU版本的二进制程序包只能使用Cuda Toolkit8.0 和 cuDNN v5。如果你使用的是其他版本(Cuda toolkit >= 7.0 and cuDNN >= v3),那你就必须使用源码重新编译安装。

推荐几种Linux平台的安装方式:

  • Pip install: 可能会升级你之前安装过的Python包,对你机器上的Python程序造成影响。
  • Anaconda install:把TensorFlow安装在Anaconda提供的环境中,不会影响其他Python程序。
  • Installing from sources:把TensorFlow源码构建成一个pip wheel 文件,使用pip工具安装它。

Pip installation
Pip是一个用来安装和管理Python软件包的包管理系统。

安装pip(如果已经安装,可以跳过)
# Ubuntu/Linux 64-bit

$ sudo apt-get install python-pip python-dev

直接使用pip安装TensorFlow

$ pip install tensorflow

如果提示找不到对应的包,使用

pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc1-cp27-none-linux_x86_64.whl

安装GPU支持的版本:
# Requires CUDA toolkit 8.0 and CuDNN v5. 其他版本,参考下面的 “Installing from sources”

$ pip install tensorflow-gpu

如果提示找不到对应的包,使用

pip install --ignore-installed --upgrade TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp27-none-linux_x86_64.whl

注意:如果是从一个较老的版本(TensorFlow<0.7.1)进行升级,需要首先卸载之前的TensorFlow和protobuf使用:pip uninstall

Anaconda installation
Anaconda是一个Python发行版,包括大量的数字和科学计算包。使用“conda”来管理软件包,并且拥有自己的环境系统。安装步骤
安装Anaconda
创建conda环境
激活conda环境,在其中安装TensorFlow
每次使用TensorFlow时,激活conda环境

Anaconda具体的安装和使用可以参考:https://www.continuum.io/downloads

Installing from sources

从源码构建TensorFlow,具体的步骤参考:http://blog.youkuaiyun.com/toormi/article/details/52904551#t8

基本使用

基本概念

使用TensorFlow前必须明白的基本概念:
图(Graph):图描述了计算的过程,TensorFlow使用图来表示计算任务。
张量(Tensor):TensorFlow使用tensor表示数据。每个Tensor是一个类型化的多维数组。
操作(op):图中的节点被称为op(operation的缩写),一个op获得0个或多个Tensor,执行计算,产生0个或多个Tensor。
会话(Session):图必须在称之为“会话”的上下文中执行。会话将图的op分发到诸如CPU或GPU之类的设备上执行。
变量(Variable):运行过程中可以被改变,用于维护状态。

计算图(The computation graph)

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

构建图

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

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

TensorFlow的Python库中包含了一个默认的graph,可以在上面使用添加节点。如果你的程序需要多个graph那就需要使用Graph类管理多个graph。

import tensorflow as tf

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

# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])

# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1, matrix2)

默认图中包含了3个节点:两个constant() op和一个matmul() op。为了真正的执行矩阵相乘运算,并得到矩阵乘法的结果,你必须在会话中启动这个图。

启动图

构造阶段完成后,才能在会话中启动图。启动图的第一步是创建一个Session对象。如果没有任何参数,会话构造器将启动默认图。

# 启动默认图.
sess = tf.Session()

# 调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数.
# 上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回
# 矩阵乘法 op 的输出.
#
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的.
#
# 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.
#
# 返回值 'result' 是一个 numpy `ndarray` 对象.
result = sess.run(product)
print result
# ==> [[ 12.]]

# 任务完成, 关闭会话.
sess.close()

Session对象在使用完成或需要关闭以释放资源。除了显示调用close外,也可以使用“with”代码块来自动完成关闭动作。

with tf.Session() as sess:
result = sess.run([product])
print result

Tensorflow的实现上,会把图转换成可分布式执行的操作,以充分利用计算资源(例如CPU或GPU)。通常情况下,你不需要显示指使用CPU或者GPU。TensorFlow能自动检测,如果检测到GPU,TensorFlow会使用第一个GPU来执行操作。

如果机器上有多个GPU,除第一个GPU外的其他GPU是不参与计算的,为了使用这些GPU,你必须将op明确指派给他们执行。with…Device语句用来指派特定的CPU或GPU执行操作:

with tf.Session() as sess:
with tf.device("/gpu:1"):
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
...

设备用字符串进行标识. 目前支持的设备包括:
“/cpu:0”: 机器的 CPU.
“/gpu:0”: 机器的第一个 GPU, 如果有的话.
“/gpu:1”: 机器的第二个 GPU, 以此类推.

Tensor

Tensorflow使用tensor数据结构来代表所有的数据。计算图的操作之间仅能传递tensor。你可以把tensor当作多维数组或列表。每一个tensor包含有一个静态类型,一个rank和一个shape。想了解更多TensorFlow是如何操作这些概念的,参考Rank, Shape, and Type

变量

变量维持图计算过程中的状态信息。下面的例子演示了如何使用变量作为一个简单的计数器。

# Create a Variable, that will be initialized to the scalar value 0.
state = tf.Variable(0, name="counter")

# Create an Op to add one to `state`.

one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)

# Variables must be initialized by running an `init` Op after having
# launched the graph. We first have to add the `init` Op to the graph.
init_op = tf.global_variables_initializer()

# Launch the graph and run the ops.
with tf.Session() as sess:
# Run the 'init' op
sess.run(init_op)
# Print the initial value of 'state'
print(sess.run(state))
# Run the op that updates 'state' and print 'state'.
for _ in range(3):
sess.run(update)
print(sess.run(state))

# output:

# 0
# 1
# 2
# 3

通常可以将一个统计模型中的参数表示为一组变量。例如,你可以将一个神经网络的权重当作一个tensor存储在变量中。在训练图的重复运行过程中去更新这个tensor。

Fetch

为了取回操作的输出内容,在使用Session对象的run()方法执行图时,传入一些tensor,这些tensor会帮你取回结果。之前的例子中,我们只取回了state节点,但是你也可以取回多个tensor:

input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)

with tf.Session() as sess:
result = sess.run([mul, intermed])
print result

# 输出:
# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]

需要获取的多个 tensor 值,在 op 的一次运行中一起获得(而不是逐个去获取 tensor)。

Feed

上面的例子中展示了在计算图中引入tensor,以常量和变量的形式存储。TensorFlow还提供了feed机制,该机制可以临时替换图中的tensor。

feed使用一个tensor值临时替换一个操作的输出。可以把feed数据作为参数提供给run()方法。标记的方法是使用tf.placeholder()为这些操作创建占位符。

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)

with tf.Session() as sess:
print sess.run([output], feed_dict={input1:[7.], input2:[2.]})

# 输出:
# [array([ 14.], dtype=float32)]
PyPI 官网下载 | nutsflow-1.0.15-py2-none-any.whl 资源来自pypi官网。 资源全名:nutsflow-1.0.15-py2-none-any.whl 立即下载

相关推荐

Windows Server 搭建ftp服务

Windows Server 搭建ftp服务

ch258563的博客 1010

流程设计器集成了自由表单设计器和流程引擎,全部实现可视化设计,十分方便快捷。

流程设计器集成了自由表单设计器和流程引擎,全部实现可视化设计,十分方便快捷。

m0_60656477的博客 727

FDTD超表面仿真详细教程,几何相位,共振相位,传播相位

FDTD的超表面主要几何相位型(PB型)和共振型两种类型,其中PB型每个cell中的纳米棒的长宽相同,旋转角度不同,共振型长宽不同,旋转角度相同。本博文中以最常见的长方形纳米棒为例,用FDTD演示两种超表面实现的聚焦透镜的功能,包含详细步骤,其他形状,材料的超表面可自行尝试。

wuyuerhhg的博客 3万+

nutflow 设计自定义组件

【代码】nutflow 设计自定义组件。

weixin_44903776的博客 469

关于瑞芯微SDK中buildroot的架构分析、配置细节、以及一些使用步骤

摘要:瑞芯微SDK基于Buildroot框架,针对RK3568等芯片提供定制化开发环境。核心目录包括buildroot(配置与编译框架)、kernel(定制内核)和u-boot(引导程序)。开发流程为:1)加载芯片默认配置;2)通过menuconfig定制系统(架构、内核、软件包等);3)可选修改内核配置。关键硬件适配需修改设备树(dts)和分区表(parameter.txt),系统行为通过启动脚本(S90network)调整。最终执行make编译生成可烧录固件。该框架通过配置文件驱动,实现从工具链构建到固

Hyjks的博客 1199

手把手教你学simulink实例--基于Simulink的船舶动力装置性能评估与仿真

船舶动力装置是船舶运行的核心系统,其性能直接影响船舶的安全性、经济性和环保性。基于MATLAB/Simulink平台进行船舶动力装置性能评估与仿真是研究和优化船舶动力系统的重要手段。通过建模与仿真,可以分析动力装置在不同工况下的性能表现,并验证控制策略的有效性。本项目旨在构建一个完整的船舶动力装置性能评估与仿真模型,包括发动机建模、传动系统建模、负载分析以及性能评估模块,并通过仿真分析其动态响应和性能指标。

MHD0815的博客 972

自定义路由

这个表你需要点想象力

m0_74795259的博客 275

基于STFT和卷积神经网络的时序数据分类

我们提供了相应的代码和数据,读者可以直接运行并尝试在自己的数据集上进行分类实验。在本文中,我们将介绍一种基于短时傅里叶变换(STFT)和卷积神经网络(CNN)的时序数据分类方法。我们将提供可直接运行的代码和数据,以帮助读者理解和实现这一方法。STFT可以提取信号的频谱信息,有助于捕捉时序数据中的关键特征。在这个例子中,我们将使用一个简化的手势识别数据集作为示例。在这段代码中,我们使用Adam优化器和稀疏分类交叉熵损失函数进行模型的编译。然后,我们使用训练集进行模型的训练,同时使用测试集进行模型性能的验证。

CodeWOW的博客 694

Netflow原理

Netflow原理1、Netflow 1、Netflow

Mr_XiangShuai的博客 2688

使用Verilog实现QR分解——嵌入式 [设计与代码]

通过Verilog的硬件描述语言,我们可以将QR分解算法实现为硬件电路,并在嵌入式系统中高效地运行。本文将介绍如何使用Verilog设计并实现QR分解算法,该算法用于将一个矩阵分解为正交矩阵Q和上三角矩阵R。具体而言,QR分解通过对矩阵的列进行正交化处理,得到正交矩阵Q,并将对应的正交化结果存储在上三角矩阵R中。该算法通过将矩阵分解为两个部分,正交矩阵Q和上三角矩阵R,实现了对矩阵的分解和变换。模块,该模块接收待分解矩阵A,并输出正交矩阵Q和上三角矩阵R。下面给出了使用Verilog实现QR分解的源代码。

CodeMaven的博客 621

AutoSAR系列讲解 - 前言

博主xyfx是一名汽车行业的嵌入式软件工程师,本职工作是同步电机的驱动控制(主要做FOC的,这个大家要是有兴趣,以后可以单独开一个专栏来讲解一下),由于做控制器的时候需要用到AutoSAR,所以特意的去学习了相关知识,同时博主自己也在同步提高中,有写的不合理的地方也请大家指正。我准备对AutoSAR开设两个大的方面来讲解,一是AutoSAR的入门篇,二是AutoSAR的实践篇,分别讲述AutoSAR的理论基础和工具的使用。

雪云飞星的博客 4万+

nutflow 模态框显不出来

其他a-modal弹窗不显示的原因是 v-modal:open 这样不行 要改成v-modal:visible 才行。哦不对 那个ApiSelect之前也没有 但是也没有报错。通过refs.调用也不行 ,但是没有任何报错就离谱。变量值输出是true, 但是就是不显示模态框。没有任何报错,感觉就像是有什么东西阻止了。不对 应该是某个组件没有注册?但是没有注册不应该报错吗。nf-curd应该是自带。

2401_84385245的博客 226

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od

KJ.JK 283

Tensorflow教程--新手入门笔记--安装

最近电脑重新装了系统,顺带将tensorflow重新装了一次。网上的教程很多,但也折腾了小半天才装上。我的电脑是:win7 64位,下面介绍一下安装步骤。 1)官网下载Anaconda 网址:https://www.continuum.io/downloads Anaconda有python2.7和python 3.6版本的。python2.7版本安装时会提示tensorflow所需求的py

karen17的博客 658

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Tensorflow入门学习笔记

这个基础教程来自于C语言中文网 0x01 Hello world Tensorflow使用的大概步骤可以高度抽象成下面的样子: 构建计算图(类似于构建算法) 开启会话 喂入数据,执行计算图 下面看一个例子: import tensorflow as tf # 首先指定常量字符串 message = tf.constant("Hello world!") # 开启会话来执行计算图 with tf.Session() as sess: print(sess.run(message).decode(.

weixin_43466027的博客 298

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Tensorflow教程笔记】TensorFlow Lite

Tensorflow教程笔记 基础 TensorFlow 基础 TensorFlow 模型建立与训练 基础示例:多层感知机(MLP) 卷积神经网络(CNN) 循环神经网络(RNN) 深度强化学习(DRL) Keras Pipeline 自定义层、损失函数和评估指标 常用模块 tf.train.Checkpoint :变量的保存与恢复 常用模块 TensorBoard:训练过程可视化 常用模块 tf.data :数据集的构建与预处理 常用模块 TFRecord :TensorFlow 数据集存储格式 常用

nanke_4869的博客 6836

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Tensorflow教程笔记】TensorFlow Serving

Tensorflow教程笔记 基础 TensorFlow 基础 TensorFlow 模型建立与训练 基础示例:多层感知机(MLP) 卷积神经网络(CNN) 循环神经网络(RNN) 深度强化学习(DRL) Keras Pipeline 自定义层、损失函数和评估指标 常用模块 tf.train.Checkpoint :变量的保存与恢复 常用模块 TensorBoard:训练过程可视化 常用模块 tf.data :数据集的构建与预处理 常用模块 TFRecord :TensorFlow 数据集存储格式 常用

nanke_4869的博客 4761

【Tensorflow教程笔记】使用 TPU 训练 TensorFlow 模型

Tensorflow教程笔记 基础 TensorFlow 基础 TensorFlow 模型建立与训练 基础示例:多层感知机(MLP) 卷积神经网络(CNN) 循环神经网络(RNN) 深度强化学习(DRL) Keras Pipeline 自定义层、损失函数和评估指标 常用模块 tf.train.Checkpoint :变量的保存与恢复 常用模块 TensorBoard:训练过程可视化 常用模块 tf.data :数据集的构建与预处理 常用模块 TFRecord :TensorFlow 数据集存储格式 常用

nanke_4869的博客 6817

【Tensorflow教程笔记】TensorFlow 模型导出

Tensorflow教程笔记 基础 TensorFlow 基础 TensorFlow 模型建立与训练 基础示例:多层感知机(MLP) 卷积神经网络(CNN) 循环神经网络(RNN) 深度强化学习(DRL) Keras Pipeline 自定义层、损失函数和评估指标 常用模块 tf.train.Checkpoint :变量的保存与恢复 常用模块 TensorBoard:训练过程可视化 常用模块 tf.data :数据集的构建与预处理 常用模块 TFRecord :TensorFlow 数据集存储格式 常用

nanke_4869的博客 6612

TensorFlow安装详细教程

TensorFlow炒鸡详细的安装教程不会,你捶我 一个电脑小白的自我成长之路^_* 其实,早之前就已经安装了,这一次实在公司安装详细记载了一下,准备写下来,希望能帮助到需要帮助的人。 第一步:以管理员身份运行anaconda prompt.过程如下图。 在“开始”中找到anaconda3(64-bit)的文件夹,点击打开,并找到anaconda prompt 点击鼠标右键 点击更多 选择以管理员身份运行 然后,在此会跳出此界面,选择是 然后,会跳出anaconda prompt命令行界面,黑乎乎

weixin_48306625的博客 1万+

【Tensorflow教程笔记】TensorFlow 分布式训练

Tensorflow教程笔记 基础 TensorFlow 基础 TensorFlow 模型建立与训练 基础示例:多层感知机(MLP) 卷积神经网络(CNN) 循环神经网络(RNN) 深度强化学习(DRL) Keras Pipeline 自定义层、损失函数和评估指标 常用模块 tf.train.Checkpoint :变量的保存与恢复 常用模块 TensorBoard:训练过程可视化 常用模块 tf.data :数据集的构建与预处理 常用模块 TFRecord :TensorFlow 数据集存储格式 常用

nanke_4869的博客 4700
上一篇: 深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow
下一篇: TensorFlow 教程 - MNIST机器学习入门完整代码
Toormi
博客等级 码龄11年 563粉丝 92原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值