Variables:TF基础数据之一,常用于变量的训练。。。重要性刚学TF就知道了

1.tf.Variable() 

tf.Variable(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)

  这种方法是最基本最简单的创建方式,一些基本介绍就不说了

2.与tf.get_variable()

tf.get_variable(name, shape=None, dtype=None, initializer=None, regularizer=None, trainable=True, collections=None, caching_device=None, partitioner=None, validate_shape=True, custom_getter=None)

  比上一个方法高级,不仅可以直接创建还可以使用权值共享功能。

  A)建立变量Variable和get_variable的区别 

    使用tf.Variable时,如果检测到命名冲突,系统会自己处理。使用tf.get_variable()时,系统不会处理冲突,而会报错。

 import tensorflow as tf
 w_1 = tf.Variable(3,name="w_1")
 w_2 = tf.Variable(1,name="w_1")
 print w_1.name
 print w_2.name
 #输出
 #w_1:0
 #w_1_1:0
 import tensorflow as tf

 w_1 = tf.get_variable(name="w_1",initializer=1)
 w_2 = tf.get_variable(name="w_1",initializer=2)
 #错误信息
 #ValueError: Variable w_1 already exists, disallowed. Did
 #you mean to set reuse=True in VarScope?

  B)权值共享  

 import tensorflow as tf

 with tf.variable_scope("scope1"):
     w1 = tf.get_variable("w1", shape=[])
     w2 = tf.Variable(0.0, name="w2")
 with tf.variable_scope("scope1", reuse=True):
     w1_p = tf.get_variable("w1", shape=[])
     w2_p = tf.Variable(1.0, name="w2")

 print(w1 is w1_p, w2 is w2_p)
 #输出
 #True  False
  variable_scope相当于命名空间  reuse标志位,判断命名空间内的variable是否重用(共享)

3.字典映射

  有时候我们参数太多,而且还不尽相同,C++种使用数据结构去存储,那么TF当然可以使用一些数据库,最简单的直接使用字典去存储。

 parameters = {
     'w1': tf.Variable(tf.truncated_normal([3, 3, 1, 64], dtype=tf.float32, stddev=1e-1), name='w1'),
     'w2': tf.Variable(tf.truncated_normal([3, 3, 64, 64], dtype=tf.float32, stddev=1e-1), name='w2'),
     'w3': tf.Variable(tf.truncated_normal([3, 3, 64, 128], dtype=tf.float32, stddev=1e-1), name='w3'),
     'w4': tf.Variable(tf.truncated_normal([3, 3, 128, 128], dtype=tf.float32, stddev=1e-1), name='w4'),
     'w5': tf.Variable(tf.truncated_normal([3, 3, 128, 256], dtype=tf.float32, stddev=1e-1), name='w5'),
     'fc1': tf.Variable(tf.truncated_normal([256*28*28, 1024], dtype=tf.float32, stddev=1e-2), name='fc1'),
     'fc2': tf.Variable(tf.truncated_normal([1024, 1024], dtype=tf.float32, stddev=1e-2), name='fc2'),
     'softmax': tf.Variable(tf.truncated_normal([1024, 10], dtype=tf.float32, stddev=1e-2), name='fc3'),
     'bw1': tf.Variable(tf.random_normal([64])),
     'bw2': tf.Variable(tf.random_normal([64])),
     'bw3': tf.Variable(tf.random_normal([128])),
     'bw4': tf.Variable(tf.random_normal([128])),
     'bw5': tf.Variable(tf.random_normal([256])),
     'bc1': tf.Variable(tf.random_normal([1024])),
     'bc2': tf.Variable(tf.random_normal([1024])),
     'bs': tf.Variable(tf.random_normal([10]))
 }
 # 第一卷积层
     conv1 = conv2d(x_, _parameters['w1'], _parameters['bw1'])
     lrn1 = lrn(conv1)
     pool1 = max_pool(lrn1, 2)

     # 第二卷积层
     conv2 = conv2d(pool1, _parameters['w2'], _parameters['bw2'])
     lrn2 = lrn(conv2)
     pool2 = max_pool(lrn2, 2)

     # 第三卷积层
     conv3 = conv2d(pool2, _parameters['w3'], _parameters['bw3'])

     # 第四卷积层
     conv4 = conv2d(conv3, _parameters['w4'], _parameters['bw4'])

     # 第五卷积层
     conv5 = conv2d(conv4, _parameters['w5'], _parameters['bw5'])
     pool5 = max_pool(conv5, 2)

参考:

    https://blog.csdn.net/u012436149/article/details/53696970

    https://blog.csdn.net/u011974639/article/details/76146822

    https://blog.csdn.net/roseki/article/details/70832143

Variables多种表达的更多相关文章

  1. 【英语】Bingo口语笔记(37) - 动物的多种表达

    let the cat out of the bag.不在袋子中的猫 指秘密被泄露 dog tired 累成狗 doggy bag  食品袋

  2. 【核心API开发】Spark入门教程[3]

    本教程源于2016年3月出版书籍<Spark原理.机制及应用> ,在此以知识共享为初衷公开部分内容,如有兴趣,请支持正版书籍. Spark综合了前人分布式数据处理架构和语言的优缺点,使用简 ...

  3. cmake条件编译

    CMake的条件编译基于if elseif endif.3.0版本具体语法如下 if(expression) # then section. COMMAND1(ARGS ...) COMMAND2(A ...

  4. spark 入门学习 核心api

    spark入门教程(3)--Spark 核心API开发 原创 2016年04月13日 20:52:28 标签: spark / 分布式 / 大数据 / 教程 / 应用 4999 本教程源于2016年3 ...

  5. UML课程复习重点

    第一章 一.UML图示建模工具 二.UML--统一建模语言,以图形符号为基础,描述软件模型既简洁又清晰.它不是开发方法,是独立于任何开发方法之外的语言.它用于描述软件系统分析.设计和实施中的各种模型. ...

  6. css的五种属性值----在路上(21)

    在CSS中,每个属性的属性值都有一定的范围,并且不同类型的属性值有不同的值.对于一个属性,必须取得正确的属性值,才能被浏览器正确地解释,因此一定要弄清每种类型的属性值范围.在CSS中属性一般有以下几种 ...

  7. oracle运算符

    单引号('): 在Oracle中,应该只运用单引号将文本和字符和日期括起来,不能运用引号(包括单双引号)将数字括起来. 双引号("): 在Oracle中,单双引号意思不同.双引号被用来将包含 ...

  8. 学习《Hardware-Efficient Bilateral Filtering for Stereo Matching》一文笔记。

    个人收藏了很多香港大学.香港科技大学以及香港中文大学里专门搞图像研究一些博士的个人网站,一般会不定期的浏览他们的作品,最近在看杨庆雄的网点时,发现他又写了一篇双边滤波的文章,并且配有源代码,于是下载下 ...

  9. JS定义函数的两种方式:函数声明和函数表达式

    函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...

随机推荐

  1. Python-接口自动化(一)

    python基础知识(一) 一.python语言特点 1.易于学习:python有相对较少的关键字,结构简单,有一个明确定义的语法,学起来比较简单: 2.易于阅读:python代码定义的更清晰: 3. ...

  2. 第九节 java7JDK的常用封装类型

    一.Java Scanner类 /初始化一个 scanner 对象. Scanner scanner = new Scanner(System.in); //判断语法 boolean b = scan ...

  3. 手把手教你实现一个 Vue 进度条组件!

    最近在个人的项目中,想对页面之间跳转的过程进行优化,想到了很多文档或 npm 等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录. 来看下 npm 搜索组件时候的效果: so 下面咱们一起动手 ...

  4. list的相关函数

    # ### 列表相关的函数 # (1) append ''' 功能:向列表的末尾添加新的元素 格式:列表.append(值) 返回值:None 注意:新添加的值在列表的末尾,该函数直接操作原有列表 ' ...

  5. C++ File Binary

    论操作非文本文件时,std::ios::binary的重要性 今天在读取图片文件的时候,根据图片数据的高宽对图片数据进行读取,但是出现了图片数据读取不完整,但是文件已经到达末尾的情况,中间想过read ...

  6. JAVA学习笔记系列4-Eclipse版本选择

    下载Eclipse需要根据安装的JDK的版本来决定是安装32位还是64位,不是根据操作系统选的.

  7. ceph存储集群测试方案

    --测试目的 测试ceph集群的读写性能,根据测试数据了解整个ceph集群的性能情况. --测试环境 1.8节点ceph集群环境,1台虚拟机(cpu 8核,内存8G),8k的块大小,时长2小时 2.8 ...

  8. Fiddler中session请求/响应类型与图标含义

    近期在看fiddler抓包工具,发现前面都会有小图标显示,不同的图标代表了不同的含义,通过查询,整理如下:  请求发送到服务器  从服务器下载响应结果  请求在断点处被暂停  响应在断点处被暂停  请 ...

  9. Python语法教程总结规范

    Python语法易错点记录 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  10. 整理面试问题iOS

    1.如何添加手势操作. 我们以在view上来举例 //创建一个view UIView *tapView=[UIView new]; tapView.frame=CGRectMake(, , kWidt ...