https://github.com/chenghuige/tensorflow-exp/blob/master/examples/sparse-tensor-classification/

 
 

tensorflow-exp/example/sparse-tensor-classification/train-validate.py

当你需要train的过程中validate的时候,如果用placeholder来接收输入数据
那么一个compute graph可以完成这个任务。如果你用的是TFRecord的方式
输入嵌入到compute graph,那么对应input(for train), input_1(for validate),就会产生两个compute graph,但是要注意的是validate过程中需要share使用等同于train过程的w_h等变量,如果直接build两次graph就回阐释下面的示意图

 
 

这种并没有共享 w_h等数据,因此validate 会有问题(注意Input_1里面对应的w_h_1)

cost, accuracy = build_graph(X, label)

_, accuracy_test = build_graph((index_test, value_test), label_test)

train_op = gen_optimizer(cost, FLAGS.learning_rate)

#train_op_test = gen_optimizer(cost_test, FLAGS.learning_rate)

 
 

来自 <http://git.oschina.net/chenghuige/tensorflow-exp/blob/master/example/sparse-tensor-classification/train-validate.py?dir=0&filepath=example%2Fsparse-tensor-classification%2Ftrain-validate.py&oid=04e0aca92d157121cac257125e2c6a66f68c1e4c&sha=b5f3b6b833ddbb99cc2c9ea763a59a3ab5c564b7>

这里
tf.get_variable_scope().reuse_variables()并不起作用,因为build_graph里面并没有使用ge_variable机制

 
 

第一种解决方案
用类 self.w_h

解决此类问题的方法之一就是使用类来创建模块,在需要的地方使用类来小心地管理他们需要的变量. 一个更高明的做法,不用调用类,而是利用TensorFlow 提供了变量作用域 机制,当构建一个视图时,很容易就可以共享命名过的变量.

 
 

来自 <http://wiki.jikexueyuan.com/project/tensorflow-zh/how_tos/variable_scope/index.html>

使用类的方式,共享w_h等变量

class Mlp(object):

def __init__(self):

hidden_size = 200

num_features = NUM_FEATURES

num_classes = NUM_CLASSES

with tf.device('/cpu:0'):

self.w_h = init_weights([num_features, hidden_size], name = 'w_h')

self.b_h = init_bias([hidden_size], name = 'b_h')

self.w_o = init_weights([hidden_size, num_classes], name = 'w_o')

self.b_o = init_bias([num_classes], name = 'b_o')

 
 

def model(self, X, w_h, b_h, w_o, b_o):

h = tf.nn.relu(matmul(X, w_h) + b_h)

return tf.matmul(h, w_o) + b_o

 

def forward(self, X):

py_x = self.model(X, self.w_h, self.b_h, self.w_o, self.b_o)

return py_x

 
 

X = (index, value)

algo = Mlp()

cost, accuracy = build_graph(X, label, algo)

cost_test, accuracy_test = build_graph((index_test, value_test), label_test, algo)

train_op = gen_optimizer(cost, FLAGS.learning_rate)

 
 

类似这种做法的例子tensorflow/tensorflow/models/embedding/word2vec.py

第二中
变量共享

 
 

 

变量作用域机制在TensorFlow中主要由两部分组成:

  • tf.get_variable(<name>, <shape>, <initializer>): 通过所给的名字创建或是返回一个变量.
  • tf.variable_scope(<scope_name>): 通过 tf.get_variable()为变量名指定命名空间.

方法 tf.get_variable() 用来获取或创建一个变量,而不是直接调用tf.Variable.它采用的不是像`tf.Variable这样直接获取值来初始化的方法.一个初始化就是一个方法,创建其形状并且为这个形状提供一个张量.这里有一些在TensorFlow中使用的初始化变量:

 
 

代码

https://github.com/chenghuige/tensorflow-exp/blob/master/examples/sparse-tensor-classification/train-validate-share.py

 
 

来自 <http://wiki.jikexueyuan.com/project/tensorflow-zh/how_tos/variable_scope/index.html>

 
 

 
 

https://github.com/chenghuige/tensorflow-exp/blob/master/examples/sparse-tensor-classification/的更多相关文章

  1. https://github.com/tensorflow/models/blob/master/research/slim/datasets/preprocess_imagenet_validation_data.py 改编版

    #!/usr/bin/env python # Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apach ...

  2. iOS - 解决Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named

    1  本来cocopods没有问题,最近创建项目,利用cocopods导入第三方库的时候,出现如下错误: [!] Unable to add a source with url `https://gi ...

  3. Git - could not read Username for 'https://github.com',push报错解决办法

    执行git push命令异常,如下: git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sou ...

  4. fatal: unable to access 'https://github.com/Homebrew/brew/'

    最近安装 Homebrew 遇到的坑,总结一下. 我的 Mac 版本是 10.13.6. 首先安装 Homebrew /usr/bin/ruby -e "$(curl -fsSL https ...

  5. git 解决 error: failed to push some refs to 'https://github.com/xxxx.git'

    在github远程创建仓库后, 利用gitbash进行提交本地文件的时候出现如下错误 [root@foundation38 demo]# git push -u origin master Usern ...

  6. 结对项目https://github.com/bxoing1994/test/blob/master/源代码

    所选项目名称:文本替换      结对人:曲承玉 github地址 :https://github.com/bxoing1994/test/blob/master/源代码 结对人github地址:ht ...

  7. https://github.com/python/cpython/blob/master/Doc/library/contextlib.rst 被同一个线程多次获取的同步基元组件

    # -*- coding: utf-8 -*- import time from threading import Lock, RLock from datetime import datetime ...

  8. https://github.com/golang/crypto/blob/master/bcrypt/bcrypt.go

    https://github.com/golang/crypto/blob/master/bcrypt/bcrypt.go

  9. https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/connections.py

    # Python implementation of the MySQL client-server protocol # http://dev.mysql.com/doc/internals/en/ ...

随机推荐

  1. APEX初步

    APEX是SFDC中用于开发的语言.语法上类似JAVA等面向对象的语言,运行起来类似数据库中的存储过程.可以在SFDC事件中添加业务逻辑,操作相关数据和用在Visual Force页面中. 保存,编译 ...

  2. Mac下安装ionic和cordova,并生成iOS项目

    为了开发HTML5,除了最新使用React Native等之外,目前首选的为稳定的ionic+Angularjs来开发iOS和android. Ionic(ionicframework一款接近原生的H ...

  3. 一道Apple公司(中国)的面试题目

    Apple在中国(上海)有公司业务,但是感觉主要是做测试工作的部门,主要是保障Apple的产品质量QE.面试的时候,面试官出了一道题目,我貌似曾今开过类似的题目,但是由于当场发挥不佳没有答出来.题目大 ...

  4. Google地图路线规划

    Google地图路线规划: 需求:给定的两点之间Google地图路径规划和详情. 代码实现: //map定义省略 var directionsDisplay = new google.maps.Dir ...

  5. R语言 批量规划求解

    昨天读到一个项目,是关于优化求解的. 约束条件如下: 公司里有很多客户,客户之所以不继续用我们的产品了,是因为他账户余额是负的,所以,为了重新赢回这些客户,公司决定发放优惠券cover掉客户账户的负余 ...

  6. Sublime Text 3 安装Package Control

    原来Subl3安装Package Control很麻烦,现在简单的方法来了 一.简单的安装方法 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: ...

  7. iOS小Tip之查看FPS

    可能大家有的时候会想要查看app在运行时的帧率能否达到60帧,如果达不到的话,你可能会想着去优化动画或者其它任何会影响显示性能的问题. 但是,你首先要观察到你的FPS,对吧? 我告诉大家一个简单的方法 ...

  8. Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

    Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...

  9. python 2.7 学习笔记--day1--基础语句和语法

    1. 用户交互 鉴于本小节十分的基础,变不多做赘述啦! 1.1 输出第一个程序:"Hello World !" 1.2 输出字符串,重点是去除字符串中的前后的空格,使用strip( ...

  10. canvas九宫格跑马灯

    canvas九宫格跑马灯抽奖 之前用dom写了一版,部分 安卓机会卡顿,换用canvas dom版本九宫格抽奖