TensorFlow中常量与变量的基本操作演示

TensorFlow中常量与变量的基本操作演示

本文将介绍TensorFlow中的基本算法运算与矩阵运算,介绍Tensorflow中常量、变量、操作符等基本运算单元概念,同时会辅助介绍会话与变量初始化等概念。谷歌使用tensorflow来命名它的深度学习框架,可以说是十分贴切的,可以分为两个单词解释tensorflow分别为tensor与flow。tensor意思翻译为中文张量,但是到底什么才是张量,tensorflow官方对此的解释是:

  • tensor表示N维的数组,向量就是一维张量、矩阵就是二维张量,其它请看下图:

flow表示数据节点流图,典型结构如下:

上述图中我们可以看到那些圆角矩形表示变量-Var,那些椭圆表示操作-OP,此外tensorflow还经常用的常量、运行数据流图需要开启会话。下面我们就一一对tensorflow最基本元素进行说明:

  1. 常量

tensorflow中常量函数是出镜率最高的函数,也是初学者最初接触到函数之一,常量函数的定义如下:

def constant(value, dtype=None, shape=None, name="Const", verify_shape=False):

举例,定义两个常量OP的代码如下:

a = tf.constant(32, dtype=tf.float32, name="a1")b = tf.constant(48, dtype=tf.float32, name="b1")32与48分别是两个常量的值,

2.变量

tensorflow中变量函数是最基础函数之一,使用频率也是非常高,变量函数定义如下:

def __init__(self, initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None):

举例,定义两个随机变量OP的代码如下:

c = tf.Variable(2.0, dtype=tf.float32, name="c1")d = tf.Variable(tf.random_normal([3, 20], stddev=0.5), name="d1")

3.操作符

通常我们把常量、变量、以及其他操作数都称为OP,假设我们对上述定义的两个常量与一个变量相加计算和就可以用如下的代码实现

e = tf.add(tf.add(a, b), c)

其中tf.add就是操作符,其它更多的操作符可以参考API说明即可。

4.会话

当我们完成上面的简单代码编写之后,我们要运行这个数据流图,首先必须初始化一个会话,可以通过tf.Session()得到返回会话对象,然后在会话中执行最终的节点操作数,整个数据流图就完成计算,完整的代码实现如下:

with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) result = sess.run(e) print(result)

上述代码执行时候,首先完成对变量的全局初始化,然后才是执行相关操作数,输出并打印结果82.0。 对于多个常量的情况,一样可以完成计算,代码演示如下:

aa = tf.constant([3, 4], dtype=tf.float32, name="a2")bb = tf.constant([5, 6], dtype=tf.float32, name="b2")cc = tf.Variable(aa + bb, dtype=tf.float32, name="c2")with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) result = sess.run(cc) print(result)

最重要的千万别忘记import tensorflow as tf 对于变量是多维的情况,我们一样可以计算,下面的代码就是生成两个二维变量,然后使用矩阵乘法计算结果,代码如下:

import tensorflow as tfm1 = tf.Variable(tf.random_normal([1, 20], stddev=5), name="m1")m2 = tf.Variable(tf.random_normal([20, 1], stddev=.4), name="m2")_M = tf.matmul(m1, m2)with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) print(sess.run(m1)) print(sess.run(m2)) result = sess.run(_M) print("result : \n", result)

上述内容主要是演示了tensorflow中的常量、变量、会话、初始化变量等一些基本元素的基本操作,后续我们还会继续更新文章!请关注!

原文发布于微信公众号 - OpenCV学堂(CVSCHOOL)

原文发表时间:2018-03-28

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS 开发杂谈

为什么数组都是从0开始编号

为什么数组都是从 0 开始编号,首先先了解一下数组的概念。 数组 Array 是一种线性表数据结构,是一组连续的内存空间,用来存储一组具有相同类型的数据。数组...

34130
来自专栏python学习指南

python生成式

本篇将介绍Python的列表生成式,更多内容请参考:Python列表生成式 列表生成式即List Comprehensions,是Python内置的非常简...

24480
来自专栏Python爬虫与数据挖掘

浅谈网络爬虫中广度优先算法和代码实现

前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章——浅谈网络爬虫中深度优先算法和简单代码实现。今天小编给大家...

10210
来自专栏编程之旅

堆排序算法

啊噢,又开始写算法学习的笔记了。最近在准备面试的过程中又把这些常见的排序算法拿出来复习复习,既然这篇写到了堆排序,那么就代表堆排序算法的概念被我忘的差不多了,写...

26030
来自专栏Python爬虫与数据挖掘

浅谈网络爬虫中广度优先算法和代码实现

前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章——浅谈网络爬虫中深度优先算法和简单代码实现。今天小编给大家...

15550
来自专栏chenjx85的技术专栏

leetcode-79-单词搜索(用dfs解决)

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

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

洛谷P3382 【模板】三分法(三分)

13100
来自专栏xingoo, 一个梦想做发明家的程序员

剑指OFFER之数值的整数次方(九度OJ1514)

题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 输入: 输入可能包含多个测试样例。 ...

22570
来自专栏小樱的经验随笔

统计0到n之间1的个数[数学,动态规划dp](经典,详解)

问题描述 给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数。 例如:N=2时 1,2出现了1个 “1” 。 N=12时 1,2,3,4,5,6,...

36380
来自专栏ThoughtWorks

TW洞见 | 崔鹏飞:Scala中Stream的应用场景及其实现原理

假设一个场景 需要在50个随机数中找到前两个可以被3整除的数字。 听起来很简单,我们可以这样来写: ? 一个产生50个随机数的函数; 一个检查某数字是否能被3...

36140

扫码关注云+社区

领取腾讯云代金券