tensorflow存储
A. tensorflow怎么训练tfrecords 数据集
基本使用
使用 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 构造器可以为其增加节点. 这个默认图对
许多程序来说已经足够用了. 阅读 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' 作为输入.
# 返回值 'proct' 代表矩阵乘法的结果.
proct = tf.matmul(matrix1, matrix2)
默认图现在有三个节点, 两个 constant() op, 和一个matmul() op. 为了真正进行矩阵相乘运算, 并得到矩阵乘法的
结果, 你必须在会话里启动这个图.
在一个会话中启动图
构造阶段完成后, 才能启动图. 启动图的第一步是创建一个 Session 对象, 如果无任何创建参数,
会话构造器将启动默认图.
欲了解完整的会话 API, 请阅读Session 类.
# 启动默认图.
sess = tf.Session()
# 调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'proct' 作为该方法的参数.
# 上面提到, 'proct' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回
# 矩阵乘法 op 的输出.
#
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的.
#
# 函数调用 'run(proct)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.
#
# 返回值 'result' 是一个 numpy `ndarray` 对象.
result = sess.run(proct)
print result
# ==> [[ 12.]]
# 任务完成, 关闭会话.
sess.close()
Session 对象在使用完后需要关闭以释放资源. 除了显式调用 close 外, 也可以使用 "with" 代码块
来自动完成关闭动作.
with tf.Session() as sess:
result = sess.run([proct])
print result
在实现上, TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU
或 GPU). 一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测. 如果检测到 GPU, TensorFlow
会尽可能地利用找到的第一个 GPU 来执行操作.
如果机器上有超过一个可用的 GPU, 除第一个外的其它 GPU 默认是不参与计算的. 为了让 TensorFlow
使用这些 GPU, 你必须将 op 明确指派给它们执行. withDevice 语句用来指派特定的 CPU 或 GPU
执行操作:
with tf.Session() as sess:
with tf.device("/gpu:1"):
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
proct = tf.matmul(matrix1, matrix2)
设备用字符串进行标识. 目前支持的设备包括:
"/cpu:0": 机器的 CPU.
"/gpu:0": 机器的第一个 GPU, 如果有的话.
"/gpu:1": 机器的第二个 GPU, 以此类推.
阅读使用GPU章节, 了解 TensorFlow GPU 使用的更多信息.
交互式使用
文档中的 Python 示例使用一个会话 Session 来
启动图, 并调用 Session.run() 方法执行操作.
为了便于使用诸如 IPython 之类的 Python 交互环境, 可以使用
InteractiveSession 代替
Session 类, 使用 Tensor.eval()
和 Operation.run() 方法代替
Session.run(). 这样可以避免使用一个变量来持有会话.
# 进入一个交互式 TensorFlow 会话.
import tensorflow as tf
sess = tf.InteractiveSession()
x = tf.Variable([1.0, 2.0])
a = tf.constant([3.0, 3.0])
# 使用初始化器 initializer op 的 run() 方法初始化 'x'
x.initializer.run()
# 增加一个减法 sub op, 从 'x' 减去 'a'. 运行减法 op, 输出结果
sub = tf.sub(x, a)
print sub.eval()
# ==> [-2. -1.]
Tensor
TensorFlow 程序使用 tensor 数据结构来代表所有的数据, 计算图中, 操作间传递的数据都是 tensor.
你可以把 TensorFlow tensor 看作是一个 n 维的数组或列表. 一个 tensor 包含一个静态类型 rank, 和
一个 shape. 想了解 TensorFlow 是如何处理这些概念的, 参见
Rank, Shape, 和 Type.
变量
Variables for more details.
变量维护图执行过程中的状态信息. 下面的例子演示了如何使用变量实现一个简单的计数器. 参见
变量 章节了解更多细节.
# 创建一个变量, 初始化为标量 0.
state = tf.Variable(0, name="counter")
# 创建一个 op, 其作用是使 state 增加 1
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)
# 启动图后, 变量必须先经过`初始化` (init) op 初始化,
# 首先必须增加一个`初始化` op 到图中.
init_op = tf.initialize_all_variables()
# 启动图, 运行 op
with tf.Session() as sess:
# 运行 'init' op
sess.run(init_op)
# 打印 'state' 的初始值
print sess.run(state)
# 运行 op, 更新 'state', 并打印 'state'
for _ in range(3):
sess.run(update)
print sess.run(state)
# 输出:
# 0
# 1
# 2
# 3
代码中 assign() 操作是图所描绘的表达式的一部分, 正如 add() 操作一样. 所以在调用 run()
执行表达式之前, 它并不会真正执行赋值操作.
通常会将一个统计模型中的参数表示为一组变量. 例如, 你可以将一个神经网络的权重作为某个变量存储在一个 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 可以对图中任何操作提交补丁, 直接插入一个 tensor.
feed 使用一个 tensor 值临时替换一个操作的输出结果. 你可以提供 feed 数据作为 run() 调用的参数.
feed 只在调用它的方法内有效, 方法结束, feed 就会消失. 最常见的用例是将某些特殊的操作指定为 "feed" 操作,
标记的方法是使用 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)]
for a larger-scale example of feeds.
如果没有正确提供 feed, placeholder() 操作将会产生错误.
MNIST 全连通 feed 教程
(source code)
给出了一个更大规模的使用 feed 的例子.
B. 如何制作tensorflow库里的mnist那种格式的数据集
MNIST 数据集 混合的国家标准和技术 (简称 MNIST) 由红外研究员,作为基准来比较不同的红外算法创建数据集。 其基本思想是如果你有你想要测试红外的算法或软件的系统,可以运行您的算法或系统针对 MNIST 的数据集和比较您的结果与其他系统以前发布成果。 数据集包含的共 70,000 图像 ; 60,000 训练图像 (用于创建红外模型) 和 10,000 测试图像 (用于评估模型的精度)。 每个 MNIST 图像是一个单一的手写的数字字符的数字化的图片。 每个图像是 28 x 28 像素大小。 每个像素值是 0,表示白色,至 255,表示黑。 中间像素值表示的灰度级。 图 2 显示了训练集的前八位的图像。 对应于每个图像的实际数字是显然对人,但确定数字是非常困难的挑战的计算机。 图 2 首八 MNIST 训练图像 奇怪的是,训练数据和测试数据均存储在两个文件中,而不是在单个文件中。 其中一个文件包含图像的像素值和,另一个包含图像的标签信息 (0 到 9)。 每个的四个文件还包含标头信息,和所有的四个文件都存储在已经使用 gzip 格式压缩的二进制格式。 注意在图 1,该演示程序使用仅 60,000 项目训练集。 测试集的格式是相同的训练集。 MNIST 文件的主存储库是目前位于 yann/exdb/mnist。 培训的像素数据存储在文件火车-图像-idx3-ubyte.gz 和培训标签数据存储在文件火车-标签-idx1-ubyte.gz。 若要运行该演示程序,您需要转到 MNIST 的存储库站点,下载并解压的两个培训数据文件。 将文件解压缩,我用的免费的开源 7-Zip 实用程序。 创建 MNIST 查看器 若要创建 MNIST 演示程序,我发起了 Visual Studio,创建一个名为 MnistViewer 的新 C# Windows 窗体项目。 演示有没有重大的.NET 版本依赖关系,因此,任何版本的 Visual Studio 应该工作。 模板代码加载到 Visual Studio 编辑器后,我设置的 UI 控件。 我添加了两个 TextBox 控件 (textBox1,textBox2) 要坚持两个解压后的培训文件的路径。 我添加一个按钮控件 (button1),并给了它一个标签加载图像。 我添加了两个多个 TextBox 控件 (textBox3,textBox4) 以保存当前图像索引和下一个图像索引的值。 我使用 Visual Studio 设计器,分别设置"NA"和"0,"这些控件的初始值。 我添加了一个 ComboBox 控件 (comboBox1) 的图像放大倍数值。 使用设计器,我去到该控件的项集合,添加字符串"1"到"10"。我添加了第二个按钮控件 (button2),并给了它一个标签的显示下一次。 我添加了 PictureBox 控件 (pictureBox1),将其背景色属性设置为 ControlDark,以便看到控件的轮廓。 我将图片框大小设置为 280 x 280 允许最多 10 倍的放大倍率 (回顾 MNIST 图像是 28 x 28 像素为单位)。 我添加了第五个 (textBox5) 文本框以显示十六进制值的图像,然后将其多行属性设置为 True 和其字体属性设置为 8.25 磅 Courier New 和扩大其大小到 606 x 412。 而且,最后,我添加了一个列表框控件 (listBox1) 的日志记录消息。 后放置 UI 控件拖到 Windows 窗体,添加三个类范围字段: public partial class Form1 : Form { private string pixelFile = @"C:\MnistViewer\train-images.idx3-ubyte"; private string labelFile = @"C:\MnistViewer\train-labels.idx1-ubyte"; private DigitImage[] trainImages = null; ... 第一次两个字符串指向解压后的培训数据文件的位置。 你会需要编辑这些要运行演示的两个字符串。 第三个字段是一个程序定义 DigitImage 对象的数组。 我编辑窗体的构造函数略成 textBox1 和 textBox2 地点的文件路径,并给予放大倍数初始值 6: public Form1() { InitializeComponent(); textBox1.Text = pixelFile; textBox2.Text = labelFile; comboBox1.SelectedItem = "6"; this.ActiveControl = button1; } 我用的 ActiveControl 属性来设置初始焦点到 button1 控件,只是为了方便。
C. 如何理解android中tensorflow的接口
对于不熟悉开源框架的读者,TensorFlow 是谷歌 2015 年底推出的深度学习框架,在开发者社区享有盛誉。去年,它已成为 GitHub 最受欢迎的机器学习开源项目。因其高度普及率,尤其是在 Python 生态圈中,TensorFlow 的功能变化会对全世界的机器学习开发者造成重大影响。
本月初,谷歌公布了 TensorFlow 1.0.0-alpha ,即 TensorFlow 1.0 的第一个草稿版本。近日,新的候选版本 TensorFlow 1.0.0-rc0 被发布出来,披露了更多技术细节,标志着我们离 完全体的 TensorFlow 1.0 更近一步。
雷锋网消息,1.0 版本不仅为 TensorFlow 机器学习函数库带来多重升级,而且为 Python 和 Java 用户使用 TensorFlow 做开发降低了难度。另外,新版本的漏洞修补也得到了改善。更有意思的是,由于对 TensorFlow 计算做优化的新编译器,在智能手机上运行基于 TensorFlow 的机器学习 APP 将成为可能。
强化对 Python 支持,加入 Java API
由于 Python 是最常用的机器学习开发语言,TensorFlow 1.0 对 Python 交互作了重点改进Python API 得到升级,TensorFlow 使用的语法和隐喻(syntax、metaphor)与 Python 的能更好吻合,提升两者之间的一致性。
雷锋网获知,该升级带来了一个坏消息:现有 Python 应用将无法兼容。TensorFlow 开发者们已经发布了一个能把旧 TensorFlow API 转化为新格式的脚本,但是该脚本无法解决所有问题很多情况下,开发者需要人工调整脚本。
TensorFlow 现已支持与 Python 3 兼容的 Docker 镜像。对于所有 Python 用户,TensorFlow 现在可以通过 Python 的原生软件包管理器 pip 来安装。这是提升 TensorFlow 可用性的关键一步,尤其对于那些使用原生 Python 应用分发、而非使用数据科学专用体系(比如 Anaconda)的用户。
Java 是机器学习领域的另一个主流语言平台。此前,TensorFlow 并没有对其支持,更没有一系列对 Java 的捆绑,而新的 1.0 版本引入了一个 Java API。但雷锋网提醒,它还远未成熟,随时可能会有变化。而且,你需要 Linux 或者 Mac OS 平台上的来源来开发 TensorFlow(你可以把这作为 Windows 端 TensorFlow 是二等公民的另一个证据)。
TensorFlow 1.0 的最大变化或许不是新语言支持或者新算法,而是 XLA 全称 Accelerated Linear Algebra,意为加速线性代数,是一个针对 TensorFlow 中线性代数运算的试验性质编译器。它通过生成既能运行于 GPU、又能在 CPU 运行的机器代码,来加速数学计算。目前, XLA 只支持英伟达 GPU,但这与当下机器学习应用对 GPU 支持的现状是一致的。
XLA 提升了 TensorFlow 的移动性。现有的、未经调整的 TensorFlow 程序只需创建一个后端即可在新硬件平台上运行。这么做的意义非同寻常 此前, IBM 就为它的 PowerAI 机器学习硬件解决方案加入了对 TensorFlow 的支持,前者由 Power8 CPU 和 GPU 混合运行。
TensorFlow 的工程师已经缩减了它的整体内存占用和 APP 的存储空间占用。这些优化对各类硬件运行环境都有好处,但对于移动平台尤其重要。此前的 TensorFlow 版本已经加入了对安卓、iOS 和 Raspberry Pi(树莓派微型电脑)硬件平台的支持,使得 TensorFlow 能在这类设备上处理诸如图像分类之类的任务。
关于机器学习的讨论往往会涉及高端硬件机器学习,尤其是深度学习,是发展高端硬件的重要推动力量,不管是定制 CPU、GPU 阵列、FPGA 还是支持云端坏境的规模化硬件。但有理论认为,创造出能在普通智能手机上运行的机器学习模型,而无需 24 小时每时每刻的云端支持,将会孵化出一系列新型应用。这便是TensorFlow 1.0 的野心之一。
D. 如何查看tensorflow版本与存储位置
使用命令:
pip show tensorflow
即可,它将显示已经安装的tensorflow包的详细信息,我的显示结果如下:
Name: tensorflow
Version: 1.4.0
Summary: TensorFlow helps the tensors flow
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: [email protected]
License: Apache 2.0
Location: /usr/lib/python3.6/site-packages
Requires: enum34, six, tensorflow-tensorboard, numpy, wheel, protobuf
其中Version是版本号,Location是tensorflow的位置。
E. 改变tensorflow变量初始化问题,怎么解决
当训练模型时,用变量来存储和更新参数。变量包含张量 (Tensor)存放于内存的缓存区。建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可在之后模型训练和分析是被加载。
F. 如何用Tensorflow开发一个简单的语音识别器
基本使用使用TensorFlow,你必须明白TensorFlow:使用图(graph)来表示计算任务.在被称之为会话(Session)的上下文(context)中执行图.使用tensor表示数据.通过变量(Variable)维护状态.使用feed和fetch可以为任意的操作(arbitraryoperation)赋值或者从其中获取数据.综述TensorFlow是一个编程系统,使用图来表示计算任务.图中的节点被称之为op(operation的缩写).一个op获得0个或多个Tensor,执行计算,产生0个或多个Tensor.每个Tensor是一个类型化的多维数组.例如,你可以将一小组图像集表示为一个四维浮点数数组,这四个维度分别是[batch,height,width,channels].一个TensorFlow图描述了计算的过程.为了进行计算,图必须在会话里被启动.会话将图的op分发到诸如CPU或GPU之类的设备上,同时提供执行op的方法.这些方法执行后,将产生的tensor返回.在Python语言中,返回的tensor是numpyndarray对象;在C和C++语言中,返回的tensor是tensorflow::Tensor实例.计算图TensorFlow程序通常被组织成一个构建阶段和一个执行阶段.在构建阶段,op的执行步骤被描述成一个图.在执行阶段,使用会话执行执行图中的op.例如,通常在构建阶段创建一个图来表示和训练神经网络,然后在执行阶段反复执行图中的训练op.TensorFlow支持C,C++,Python编程语言.目前,TensorFlow的Python库更加易用,它提供了大量的辅助函数来简化构建图的工作,这些函数尚未被C和C++库支持.三种语言的会话库(sessionlibraries)是一致的.构建图构建图的第一步,是创建源op(sourceop).源op不需要任何输入,例如常量(Constant).源op的输出被传递给其它op做运算.Python库中,op构造器的返回值代表被构造出的op的输出,这些返回值可以传递给其它op构造器作为输入.TensorFlowPython库有一个默认图(defaultgraph),op构造器可以为其增加节点.这个默认图对许多程序来说已经足够用了.阅读Graph类文档来了解如何管理多个图.importtensorflowastf#创建一个常量op,产生一个1x2矩阵.这个op被作为一个节点#加到默认图中.##构造器的返回值代表该常量op的返回值.matrix1=tf.constant([[3.,3.]])#创建另外一个常量op,产生一个2x1矩阵.matrix2=tf.constant([[2.],[2.]])#创建一个矩阵乘法matmulop,把'matrix1'和'matrix2'作为输入.#返回值'proct'代表矩阵乘法的结果.proct=tf.matmul(matrix1,matrix2)默认图现在有三个节点,两个constant()op,和一个matmul()op.为了真正进行矩阵相乘运算,并得到矩阵乘法的结果,你必须在会话里启动这个图.在一个会话中启动图构造阶段完成后,才能启动图.启动图的第一步是创建一个Session对象,如果无任何创建参数,会话构造器将启动默认图.欲了解完整的会话API,请阅读Session类.#启动默认图.sess=tf.Session()#调用sess的'run()'方法来执行矩阵乘法op,传入'proct'作为该方法的参数.#上面提到,'proct'代表了矩阵乘法op的输出,传入它是向方法表明,我们希望取回#矩阵乘法op的输出.##整个执行过程是自动化的,会话负责传递op所需的全部输入.op通常是并发执行的.##函数调用'run(proct)'触发了图中三个op(两个常量op和一个矩阵乘法op)的执行.##返回值'result'是一个numpy`ndarray`对象.result=sess.run(proct)printresult#==>[[12.]]#任务完成,关闭会话.sess.close()Session对象在使用完后需要关闭以释放资源.除了显式调用close外,也可以使用"with"代码块来自动完成关闭动作.withtf.Session()assess:result=sess.run([proct])printresult在实现上,TensorFlow将图形定义转换成分布式执行的操作,以充分利用可用的计算资源(如CPU或GPU).一般你不需要显式指定使用CPU还是GPU,TensorFlow能自动检测.如果检测到GPU,TensorFlow会尽可能地利用找到的第一个GPU来执行操作.如果机器上有超过一个可用的GPU,除第一个外的其它GPU默认是不参与计算的.为了让TensorFlow使用这些GPU,你必须将op明确指派给它们执行.withDevice语句用来指派特定的CPU或GPU执行操作:withtf.Session()assess:withtf.device("/gpu:1"):matrix1=tf.constant([[3.,3.]])matrix2=tf.constant([[2.],[2.]])proct=tf.matmul(matrix1,matrix2)设备用字符串进行标识.目前支持的设备包括:"/cpu:0":机器的CPU."/gpu:0":机器的第一个GPU,如果有的话."/gpu:1":机器的第二个GPU,以此类推.阅读使用GPU章节,了解TensorFlowGPU使用的信息.交互式使用文档中的Python示例使用一个会话Session来启动图,并调用Session.run()方法执行操作.为了便于使用诸如IPython之类的Python交互环境,可以使用InteractiveSession代替Session类,使用Tensor.eval()和Operation.run()方法代替Session.run().这样可以避免使用一个变量来持有会话.#进入一个交互式TensorFlow会话.importtensorflowastfsess=tf.InteractiveSession()x=tf.Variable([1.0,2.0])a=tf.constant([3.0,3.0])#使用初始化器initializerop的run()方法初始化'x'x.initializer.run()#增加一个减法subop,从'x'减去'a'.运行减法op,输出结果sub=tf.sub(x,a)printsub.eval()#==>[-2.-1.]TensorTensorFlow程序使用tensor数据结构来代表所有的数据,计算图中,操作间传递的数据都是tensor.你可以把TensorFlowtensor看作是一个n维的数组或列表.一个tensor包含一个静态类型rank,和一个shape.想了解TensorFlow是如何处理这些概念的,参见Rank,Shape,和Type.变量Variablesformoredetails.变量维护图执行过程中的状态信息.下面的例子演示了如何使用变量实现一个简单的计数器.参见变量章节了解细节.#创建一个变量,初始化为标量0.state=tf.Variable(0,name="counter")#创建一个op,其作用是使state增加1one=tf.constant(1)new_value=tf.add(state,one)update=tf.assign(state,new_value)#启动图后,变量必须先经过`初始化`(init)op初始化,#首先必须增加一个`初始化`op到图中.init_op=tf.initialize_all_variables()#启动图,运行opwithtf.Session()assess:#运行'init'opsess.run(init_op)#打印'state'的初始值printsess.run(state)#运行op,更新'state',并打印'state'for_inrange(3):sess.run(update)printsess.run(state)#输出:#0#1#2#3代码中assign()操作是图所描绘的表达式的一部分,正如add()操作一样.所以在调用run()执行表达式之前,它并不会真正执行赋值操作.通常会将一个统计模型中的参数表示为一组变量.例如,你可以将一个神经网络的权重作为某个变量存储在一个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)withtf.Session()assess:result=sess.run([mul,intermed])printresult#输出:#[array([21.],dtype=float32),array([7.],dtype=float32)]需要获取的多个tensor值,在op的一次运行中一起获得(而不是逐个去获取tensor)。Feed上述示例在计算图中引入了tensor,以常量或变量的形式存储.TensorFlow还提供了feed机制,该机制可以临时替代图中的任意操作中的tensor可以对图中任何操作提交补丁,直接插入一个tensor.feed使用一个tensor值临时替换一个操作的输出结果.你可以提供feed数据作为run()调用的参数.feed只在调用它的方法内有效,方法结束,feed就会消失.最常见的用例是将某些特殊的操作指定为"feed"操作,标记的方法是使用tf.placeholder()为这些操作创建占位符.input1=tf.placeholder(tf.float32)input2=tf.placeholder(tf.float32)output=tf.mul(input1,input2)withtf.Session()assess:printsess.run([output],feed_dict={input1:[7.],input2:[2.]})#输出:#[array([14.],dtype=float32)]foralarger-scaleexampleoffeeds.如果没有正确提供feed,placeholder()操作将会产生错误.MNIST全连通feed教程(sourcecode)给出了一个更大规模的使用feed的例子.
G. 怎样搭建tensorflow开发环境
TensorFlow 使用的语法和隐喻(syntax.0 的最大变化或许不是新语言支持或者新算法。这是提升 TensorFlow 可用性的关键一步,但对于移动平台尤其重要,不管是定制 CPU,TensorFlow 1,由于对 TensorFlow 计算做优化的新编译器,而且为 Python 和 Java 用户使用 TensorFlow 做开发降低了难度,披露了更多技术细节。而且:现有 Python 应用将无法兼容,即 TensorFlow 1.0 的野心之一,更没有一系列对 Java 的捆绑,标志着我们离 完全体的 TensorFlow 1,它已成为 GitHub 最受欢迎的机器学习开源项目,使得 TensorFlow 能在这类设备上处理诸如图像分类之类的任务。因其高度普及率,谷歌公布了 TensorFlow 1.0,开发者需要人工调整脚本,创造出能在普通智能手机上运行的机器学习模型、GPU 阵列。
TensorFlow 1,TensorFlow 并没有对其支持。
雷锋网获知,新版本的漏洞修补也得到了改善、未经调整的 TensorFlow 程序只需创建一个后端即可在新硬件平台上运行、FPGA 还是支持云端坏境的规模化硬件、而非使用数据科学专用体系(比如 Anaconda)的用户,TensorFlow 是谷歌 2015 年底推出的深度学习框架。
对于不熟悉开源框架的读者。这便是TensorFlow 1。但雷锋网提醒,是发展高端硬件的重要推动力量, XLA 只支持英伟达 GPU,但是该脚本无法解决所有问题很多情况下,尤其对于那些使用原生 Python 应用分发,随时可能会有变化,尤其是深度学习。对于所有 Python 用户。TensorFlow 开发者们已经发布了一个能把旧 TensorFlow API 转化为新格式的脚本,TensorFlow 现在可以通过 Python 的原生软件包管理器 pip 来安装。
本月初,1,来加速数学计算。此前。
关于机器学习的讨论往往会涉及高端硬件机器学习,但这与当下机器学习应用对 GPU 支持的现状是一致的.0 版本不仅为 TensorFlow 机器学习函数库带来多重升级。
雷锋网消息,是一个针对 TensorFlow 中线性代数运算的试验性质编译器。现有的,它还远未成熟。近日,在智能手机上运行基于 TensorFlow 的机器学习 APP 将成为可能。去年.0-alpha .0 的第一个草稿版本、metaphor)与 Python 的能更好吻合、iOS 和 Raspberry Pi(树莓派微型电脑)硬件平台的支持.0 更近一步,前者由 Power8 CPU 和 GPU 混合运行.0 版本引入了一个 Java API,TensorFlow 终于将迎来史上最重大更新,尤其是在 Python 生态圈中.0,而新的 1:TensorFlow 1。此前的 TensorFlow 版本已经加入了对安卓,将会孵化出一系列新型应用。
强化对 Python 支持,该升级带来了一个坏消息。
TensorFlow 的工程师已经缩减了它的整体内存占用和 APP 的存储空间占用。它通过生成既能运行于 GPU,加入 Java API
由于 Python 是最常用的机器学习开发语言.0-rc0 被发布出来。
XLA 提升了 TensorFlow 的移动性,提升两者之间的一致性, IBM 就为它的 PowerAI 机器学习硬件解决方案加入了对 TensorFlow 的支持,你需要 Linux 或者 Mac OS 平台上的来源来开发 TensorFlow(你可以把这作为 Windows 端 TensorFlow 是二等公民的另一个证据),在开发者社区享有盛誉。另外在发布逾一周年之际、又能在 CPU 运行的机器代码。更有意思的是。
Java 是机器学习领域的另一个主流语言平台。这些优化对各类硬件运行环境都有好处,TensorFlow 的功能变化会对全世界的机器学习开发者造成重大影响,而无需 24 小时每时每刻的云端支持。
TensorFlow 现已支持与 Python 3 兼容的 Docker 镜像,新的候选版本 TensorFlow 1,意为加速线性代数。目前。但有理论认为.0 对 Python 交互作了重点改进Python API 得到升级.0。这么做的意义非同寻常 此前,而是 XLA 全称 Accelerated Linear Algebra
H. tensorflow存储session有什么用
基本使用 使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务. 在被称之为 会话 (Session) 的上下文 (context) 中执行图. 使用 tensor 表示数据. 通过 变量 (Variable) 维护状态. 使用 feed 和 fetch 可以为任意的操作