tensorflow 1. 人生只若如hello

作者: YuanLulu | 来源:发表于2018-03-13 13:46 被阅读36次

这里的例子包含在:https://github.com/aymericdamien/TensorFlow-Examples/tree/master/examples/1_Introduction

官方的入门讲解在:http://www.tensorfly.cn/tfdoc/get_started/basic_usage.html

使用 TensorFlow, 你必须明白 TensorFlow:
  • 使用图 (graph) 来表示计算任务.
  • 在被称之为 会话 (Session) 的上下文 (context) 中执行图.
  • 使用 tensor 表示数据.
  • 通过 变量 (Variable) 维护状态.
  • 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据.
对于程序员来说,“hello world”形式的例子几乎是一种学习新技术的仪式。
tensorflow版的"开机仪式"代码如下:
import tensorflow as tf

#定义一个常量操作节点,
hello = tf.constant("hello, TensorFlow2018!")

#获取一个会话
sess = tf.Session()

#启动会话运行hello节点
print(sess.run(hello))
# 任务完成, 关闭会话.
sess.close()

#输出内容为:b'hello, TensorFlow2018!'

下面这个例子牵涉到的概念更全面:

import tensorflow as tf 

#定义两个常量操作
#构造函数返回的值就是常量节点(Constant op)的输出
a = tf.constant(2)
b = tf.constant(3)

#启动默认的计算图
with tf.Session() as sess:
    print("a = 2, b = 3")
    print("常量相加:{}".format(sess.run(a+b)))
    print("常量相乘:{}".format(sess.run(a*b)))

#使用变量输出值作为计算图的输入
a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16)

#定义一些操作
add = tf.add(a, b)
mul = tf.multiply(a, b)

#启动默认的计算图
with tf.Session() as sess:
    print("变量相加:{}".format(sess.run(add, feed_dict={a:2, b:3})))
    print("变量相乘:{}".format(sess.run(mul, feed_dict={a:2, b:3})))


#创建一个1X2的常量矩阵,该op会作为一个节点被加入到默认的计算图
#构造器返回的值代表这个op的输出
matrix1 = tf.constant([[3., 3.]])

#创建一个2X1的常量矩阵
matrix2 = tf.constant([[2.], [2.]])

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

#为了运行mutmul op我们运行会话的run()方法,使用product作为输入,product代表mutmul op的输出
#这表明我们想要matmul op的输出

#op的所有输入都会由会话自动运行。这些输入一般都是并行运行的

#对'run(product)'的调用回引起这3个op的执行:2个constants和一个matmul
#op的输出值返回给result,这是一个numpy数组对象
with tf.Session() as sess:
    result = sess.run(product)
    print("矩阵常量相称:{}".format(result))

输出内容为:

a = 2, b = 3
常量相加:5
常量相乘:6
变量相加:5
变量相乘:6
矩阵常量相称:[[ 12.]]

知识总结

tensorflow的基本概念就是数据流图,使用tensorflow的步骤就是:
  1. 构建数据流图
  2. 运行数据流图
数据流图由两种基础构建组成:
  • 节点(node):通常由圆圈表示,代表某种数学操作或运算(因此经常简称op:operation)。
  • 边(edge):对应向op传入和从op传出的数值。这些边可以运输多维数据(即张量)

下面借用http://www.tensorfly.cn/的一段描述.

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

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


image
运行数据流图需要在会话(session)中进行,常用的创建方式是:

with tf.Session() as sess或者sess = tf.Session()

运行数据流图过程会执行各种操作,借用studyAi网站的一副图片:


image

如果机器上有超过一个可用的 GPU, 除第一个外的其它 GPU 默认是不参与计算的. 为了让 TensorFlow 使用这些 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, 以此类推.

与数据相关的op由三种:

  • tf.constant
  • tf.placeholder
  • tf.Variable

使用Variable的使用必须先经过初始化 (init) op 初始化

init_op = tf.global_variables_initializer()
with tf.Session() as sess:
  # 运行 'init' op
  sess.run(init_op)
注意不要使用tf.initialize_all_variables()了。否则会有警告,这个接口正在被抛弃

相关文章

  • tensorflow 1. 人生只若如hello

    这里的例子包含在:https://github.com/aymericdamien/TensorFlow-Exam...

  • 人生若只如

    自从那风流才子纳兰容若写出“人生若只如初见”这句诗,便广为流传,尤其被广泛应用于爱情里面。“生命诚可贵,爱情价更高...

  • 人生若只如,初见

    看图写诗 人生若只如,初见 文/爱乐 人生若只如,初见 你的花瓣,...

  • 《末爱》

    人生若只如初见, 怀念似明月当空! 人生若只如情深, 离别当肝肠寸断! 人生若只如真爱, 舍身该义无反顾…… 人生...

  • 人生若只如背影

    人生若只如背影 可以雾里看花 水中望月 人生若只如背影 可以留着几分遐想 人生若只如背影 就少了转过头来的尴尬 注...

  • Machine Learning(一):基于 TensorFlo

    Hello TensorFlow TensorFlow C library TensorFlow Go bin...

  • 【荐书】这八本散文,让你邂逅一朵倾城时光

    1.《人生若只如初见》 作者:安意如 简介: 《人生若只如初见:古典诗词的美丽与哀愁》故事上溯汉高祖与戚夫人,下至...

  • 人生若只如背影

    人生若只如背影 不相见 不相恋 更不必言不由衷 多少愁苦付东风 人生若只如背影 来也匆匆 去也匆匆 心思不用想猜 ...

  • 人生若只如“初见”

    在现实社会上,每个人都力图给别人留下良好的“第一印象"…… 那你是选择听信“相由心生”,还是觉得“日久见人心”?看...

  • 人生若只如“不见”

    她和她是同桌 她和她来自不一样的家庭 她和她一个长着天使的样貌,一个却长得平淡无其 她和她唯一相同的东西应该是喜欢...

网友评论

    本文标题:tensorflow 1. 人生只若如hello

    本文链接:https://www.haomeiwen.com/subject/hulzfftx.html