基于TensorFlow的深度学习系列教程 2——常量Constant
前面介绍过了Tensorflow的基本概念,比如如何使用tensorboard查看计算图。本篇则着重介绍和整理下Constant相关的内容。
基于TensorFlow的深度学习系列教程 1——Hello World!
常量的概念
在tensorflow中,数据分为几种类型: 常量Constant、变量Variable、占位符Placeholder。其中:
- 常量:用于存储一些不变的数值,在计算图创建的时候,调用初始化方法时,直接保存在计算图中
- 变量:模型训练的参数,比如全连接里面的W和bias
- 占位符:就是模型每次训练时的样本,当计算图固定时,只需要替换占位符里面的内容,就可以重新计算了。
概念上跟spark的DAG图差不多,不过图的模式更固定一些,不像spark还分为action和transform。
常量的简单使用
下面这个例子就是常量最简单的使用例子了,定义a和b两个常量,输出x。x=a+b。
import tensorflow as tf
a = tf.constant(2)
b = tf.constant(3)
x = tf.add(a, b)
with tf.Session() as sess:
writer = tf.summary.FileWriter('./graphs', sess.graph)
print(sess.run(x))
writer.close()
得到的计算图如下:

选中constant可以发现,它的值直接写在定义里面了。

常量的初始化
1 固定初始化、0或1初始化
最常用的初始化方法,就是直接在声明的时候赋予一个初始值,也可以根于指定的shape进行0和1的填充
import tensorflow as tf
# tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False)
# 常量的创建
# [2 2]
a = tf.constant([2, 2], name='vector')
# [[0 1] [2 3]]
b = tf.constant([[0, 1], [2, 3]], name='b')
# 也可以直接初始化成0或者1
# [[0 0 0] [0 0 0]]
zero1 = tf.zeros([2, 3], tf.int32)
# [[0 0] [0 0]]
zero2 = tf.zeros_like([[0, 1], [2, 3]])
# [[1 1 1] [1 1 1]]
one1 = tf.ones([2, 3], tf.int32)
# [[1 1] [1 1]]
one2 = tf.ones_like([[0, 1], [2, 3]])
# 基于填充创建
# [[8 8 8] [8 8 8]]
fill1 = tf.fill([2, 3], 8)
# 基于序列创建
# [10. 11. 12. 13.]
lnspace1 = tf.linspace(10., 13., 4, name='linspace')
# [ 3 7 11 15]
range1 = tf.range(3, 18, 4)
# [ 3 8 13]
range2 = tf.range(3, 18, 5)
# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17]
range3 = tf.range(18)
with tf.Session() as sess:
print(sess.run(a))
print(sess.run(b))
print(sess.run(zero1))
print(sess.run(zero2))
print(sess.run(one1))
print(sess.run(one2))
print(sess.run(fill1))
print(sess.run(lnspace1))
print(sess.run(range1))
print(sess.run(range2))
print(sess.run(range3))
tensorflow在设计时,尽量模仿numpy,因此很多函数都很类似。不过有一些操作tf中还是无法支持的,比如map:
import tensorflow as tf
import numpy as np
"""
0.0
3.3333333333333335
6.666666666666667
10.0
"""
for a in np.linspace(0., 10., 4):
print(a)
"""
TypeError: Tensor objects are not iterable when eager execution is not enabled. To iterate over this tensor use tf.map_fn.
"""
for a in tf.linspace(0., 10., 4):
print(a)
常量的随机初始化
另一种常用的初始化方法就是指定随机方法进行初始化。
import tensorflow as tf
import cv2
# 初始化服从指定正态分布的数值
# [ 2.3021064 0.4199094 -0.03323628 0.47499242 0.36770386 -0.7848035 -0.70948434 -0.35462353 0.75125676 0.50364155]
r1 = tf.random_normal([10], mean=0.0, stddev=1.0, dtype=tf.float32)
# 产生截断的正态分布,如果与均值差值超过两倍,就重新生成
# [ 1.785729 0.5161861 0.3950558 1.5795906 0.25945508 -1.5349426 -0.00732355 0.14366971 -0.7726713 -0.2694001 ]
r2 = tf.truncated_normal([10])
# 产生low和high之间的均匀分布
# [-0.54088783 -2.957581 1.8622065 -2.7436473 0.8000214 2.087247 2.5148878 -0.19671392 0.9098282 1.6573 ]
r3 = tf.random_uniform([10], minval=-3, maxval=3, dtype=tf.float32)
# 随机打乱
# [4 2 1 5 3]
r4 = tf.random_shuffle([1, 2, 3, 4, 5])
# 随机裁剪,一般用在图像上
# [-1.6676509 -2.3372912 -0.39069057 2.044036 -2.0961857 ]
r5 = tf.random_crop(r3, [5])
# 图片例子
img = cv2.imread('tensorboard.jpg')
cv2.imshow('origin', img)
# 多项式
multinomial1 = tf.multinomial([[0.99], [0.2]], 10)
multinomial2 = tf.multinomial([[0, 0.02, 0.99], [0, 0.99, 0.2]], 10)
# r7 = tf.random_gamma([])
with tf.Session() as sess:
print(sess.run(r1))
print(sess.run(r2))
print(sess.run(r3))
print(sess.run(r4))
print(sess.run(r5))
print(sess.run(multinomial1))
print(sess.run(multinomial2))
img_tf = tf.convert_to_tensor(img)
distorted_image = tf.random_crop(img_tf, [300, 300, 3])
img_np = distorted_image.eval()
cv2.imshow('random', img_np)
cv2.waitKey(0)
里面的random_gamma没见过应用的场景,所以也没有细致的研究。
基于TensorFlow的深度学习系列教程 2——常量Constant的更多相关文章
- 基于TensorFlow的深度学习系列教程 1——Hello World!
最近看到一份不错的深度学习资源--Stanford中的CS20SI:<TensorFlow for Deep Learning Research>,正好跟着学习一下TensorFlow的基 ...
- TensorFlow和深度学习入门教程(TensorFlow and deep learning without a PhD)【转】
本文转载自:https://blog.csdn.net/xummgg/article/details/69214366 前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把 ...
- TensorFlow和深度学习新手教程(TensorFlow and deep learning without a PhD)
前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络.并把其PPT的參考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep lear ...
- 建设基于TensorFlow的深度学习环境
一.使用yum安装git 1.查看系统是否已经安装git git --version 2.yum 安装git yum install git 3.安装成功 git --version 4.进入指定目录 ...
- 碰到的问题——建设基于TensorFlow的深度学习环境
1.解决jupyter notebook问题:socket.error: [Errno 99] Cannot assign requested address 首先要生成一个jupyter的配置文件: ...
- 大数据下基于Tensorflow框架的深度学习示例教程
近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较 ...
- 使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】
转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 ...
- 深度学习系列 Part(3)
这是<GPU学习深度学习>系列文章的第三篇,主要是接着上一讲提到的如何自己构建深度神经网络框架中的功能模块,进一步详细介绍 Tensorflow 中 Keras 工具包提供的几种深度神经网 ...
- 【深度学习系列3】 Mariana CNN并行框架与图像识别
[深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框 ...
随机推荐
- 了解计算机与操作系统发展阶段--Windows
Windows发展的30多年,其实就是整个计算机应用,从小众化向大众化消费领域,快速前行的30多年. 让我们来一起温故下Windows这么多年的发展历程,看看Windows,是如何在市场和技术这两种力 ...
- setTimeout与Promise的区别
1,4,3,2 Promise是一个micro task 主线程是一个task micro task queue会在task后面执行 setTimeout返回的函数是一个新的task macro ...
- Oracle定时任务Job笔记
定时任务应用场景: 某一个生产系统上面,临时表不断变多,占了不少磁盘空间.由于这套软件是直接买的,不方便修改源代码.所以考虑使用Oracle定时任务直接从数据库层删除临时表. 定时任务业务: 首先写好 ...
- $.isPlainObject
// Support: IE<9 // Handle iteration over inherited properties before own properties. if ( !suppo ...
- weex h5开发区别-实践初级篇
html标签 weex中没有标签的概念,html中标签对应于weex中的Components weex 无<span> .<p> ,用<text>替代.但是< ...
- 20172306 2018-2019-2 《Java程序设计与数据结构》第六周学习总结
20172306 2018-2019-2 <Java程序设计与数据结构>第六周学习总结 教材学习内容总结 概述(了解一下树的一些概念) 树是一种非线性结构.树由一个包含结点和边的集构成,其 ...
- java idea导入ecli项目
转:https://blog.csdn.net/deng11408205/article/details/79723213 1.关闭所有项目:开启idea进入导入项目选项 2.选择.classpath ...
- 描点的改进:运用chart画图。
主要是利用Chart画图: 通过选中一部分曲线进行图像的放大和缩小,最小值为1格. 先计算最大值和最小差值.然后赋值给AxisY.Minimum 和AxisY.Maximum.x轴初始显示数目:Axi ...
- Scrum冲刺阶段5
成员今日完成的任务 人员 任务 何承华 学习后端设计 陈宇 后端设计 丁培辉 学习后端设计 温志铭 日程添加界面设计(后半段设计) 杨宇潇 日程添加界面设计(后半段设计) 张主强 服务器构建学习 成员 ...
- Mac 系统搭建ThinkPHP3.2
PHP3.2完整包目录 拷贝两个文件 index.php 和ThinkPHP目录到服务器目录中,我已经设置服务器目录与eclipse工作空间为同一个 创建TestThinkPHP 项目 Eclipse ...