02 The TensorFlow Way(1)

The TensorFlow Way

Introduction: 

        现在我们介绍了TensorFlow如何创建张量,使用变量和占位符,我们将介绍如何在计算图中对这些对象采取处理。 从此,我们可以设置一个简单的分类器,看看它的表现如何。

Operations in a Computational Graph:

        Getting ready:

要启动图形,我们加载TensorFlow并创建一个会话,如下所示:

 import tensorflow as tf
 sess = tf.Session()
 

How to do it...:

在这个例子中,我们将结合我们所学到的和在列表中输入每个数字通过计算图操作并打印输出:

        1.首先我们声明我们的张量和占位符。 这里我们将创建一个numpy数组来进入我们的操作:

 import numpy as np
 x_vals = np.array([1., 3., 5., 7., 9.])
 x_data = tf.placeholder(tf.float32)
 m_const = tf.constant(3.)
 my_product = tf.mul(x_data, m_const)
 for x_val in x_vals:
 print(sess.run(my_product, feed_dict={x_data: x_val}))

How it works...:

步骤1和2在计算图上创建数据和操作。 然后,在步骤3中,我们通过图形提供数据并打印输出。 这是计算图形的样子:

Layering Nested Operations:

         Getting ready:

了解如何将操作连接在一起很重要。 这将在计算图中设置分层操作。 对于演示,我们将乘以一个占位符两个矩阵,然后执行加法。 我们将以三维numpy数组的形式提供两个矩阵:

 import tensorflow as tf
 sess = tf.Session()

How to do it...:

注意数据在通过时如何改变形状也很重要。 我们将提供两个大小为3x5的数组。 我们将乘以每个矩阵大小为5x1的常数,这将导致大小为3x1的矩阵。 然后,我们将乘以1x1矩阵,再次产生3x1矩阵。 最后,我们最后添加一个3x1矩阵,如下所示:

        1.首先,我们创建数据传回和相应的占位符:

my_array = np.array([[1., 3., 5., 7., 9.],
                                   [-2., 0., 2., 4., 6.],
                                   [-6., -3., 0., 3., 6.]])
x_vals = np.array([my_array, my_array + 1])
x_data = tf.placeholder(tf.float32, shape=(3, 5))

        2.接下来,我们创建我们将用于矩阵乘法和加法的常数:

m1 = tf.constant([[1.],[0.],[-1.],[2.],[4.]])
m2 = tf.constant([[2.]])
a1 = tf.constant([[10.]])

        3.现在我们声明操作并将它们添加到图中:

        prod1 = tf.matmul(x_data, m1)
        prod2 = tf.matmul(prod1, m2)
        add1 = tf.add(prod2, a1)

        4.最后,我们通过图表提供数据:

for x_val in x_vals:
        print(sess.run(add1, feed_dict={x_data: x_val}))
[[ 102.]
[ 66.]
[ 58.]]
[[ 114.]
[ 78.]
[ 70.]]

How it works...:

我们刚刚创建的计算图可以用Tensorboard来显示。 检测板是TensorFlow的一个功能,它允许我们可视化该图中的计算图和值。 这些功能本身提供,与其他机器学习框架不同。 要了解如何完成此操作,请参阅第11章“更多与TensorFlow”中的“Tensorboard配方”中的“可视化图”。 这是我们的分层图如下所示:

There's more...:

        在通过图形运行数据之前,我们必须声明数据的shape并知道操作的结果shape。 情况并非如此。 可能有一个或两个我们不知道或可以改变的维度。 为了实现这一点,我们指定可以变化或未知的维值为无值。 例如,要使先前的数据占位符的列数不明,我们将写下列行:     x_data = tf.placeholder(tf.float32,shape =(3,None)) 这允许我们打破矩阵乘法规则,我们仍然必须遵守乘法常数必须具有相同的相应行数的事实。 我们可以在我们的图表中提供数据时动态生成或重新整形x_data。 当我们在多个批次中提供数据时,这将在后面的章节中派上用场。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能

TensorFlow简介

TensorFlow是由Google开发的用于解决复杂数学问题的库。本篇介绍将简述TensorFlow示例,如何定义、使用张量执行数学运算,以及查看其他机器学习...

3.4K11
来自专栏漫漫深度学习路

tensorflow学习笔记(三十九):双向rnn

tensorflow 双向 rnn 如何在tensorflow中实现双向rnn 单层双向rnn ? 单层双向rnn (cs224d) tensorfl...

8275
来自专栏拂晓风起

妙用Pixel bender执行复杂运算/普通数据运算 传递Vector数组

1052
来自专栏程序生活

TensorFlow入门:MNIST数据的单层逻辑回归代码单层回归代码输出结果

2124
来自专栏C/C++基础

Dijkstra算法求单源最短路径

在一个连通图中,从一个顶点到另一个顶点间可能存在多条路径,而每条路径的边数并不一定相同。如果是一个带权图,那么路径长度为路径上各边的权值的总和。两个顶点间路径长...

2961
来自专栏人工智能LeadAI

译文 | 与TensorFlow的第一次接触 第三章:聚类

前一章节中介绍的线性回归是一种监督学习算法,我们使用数据与输出值(标签)来建立模型拟合它们。但是我们并不总是有已经打标签的数据,却仍然想去分析它们。这种情况下,...

4376
来自专栏小小挖掘机

使用Seq2Seq+attention实现简单的Chatbot

本文代码的github连接:https://github.com/princewen/tensorflow_practice/tree/master/chat_...

3.5K6
来自专栏wym

python实现 opencv 学习笔记---模板匹配matchTemplate

这是打印出result的值,下面一张图是计算公式,通过公式也可以知道匹配程度在什么情况下最好

4555
来自专栏闪电gogogo的专栏

压缩感知重构算法之正则化正交匹配追踪(ROMP)

  在看代码之前,先拜读了ROMP的经典文章:Needell D,VershyninR.Signal recovery from incompleteand i...

3596
来自专栏数据结构与算法

02:奇数单增序列 个人博客doubleq.win

 个人博客doubleq.win 02:奇数单增序列 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 给定一个长度为N(不...

3418

扫码关注云+社区

领取腾讯云代金券