TensorFlow变量共享解析

tensorflow在代码不同位置调用神经网络想要共享权重 一个简单的代码: cnn网络定义了四个卷积层,权重为随机初始化的权重,输入为随机的(50,64,64,3)的向量 x1,x2的输出都调用了cnn这个函数 import tensorflow as tf def cnn(hidden): kwargs = dict(strides=2, activation=tf.nn.relu) hidden = tf.layers.conv2d... 阅读详情

转载自:http://blog.youkuaiyun.com/jerr__y/article/details/70809528

  • name_scope: 为了更好地管理变量的命名空间而提出的。比如在 tensorboard 中,因为引入了 name_scope,我们的 Graph 看起来才井然有序。
  • variable_scope: 大大大部分情况下,跟 tf.get_variable() 配合使用,实现变量共享的功能。
  • tf.name_scope() 并不会对 tf.get_variable() 创建的变量有任何影响。
    -
    1、未权值共享代码
import tensorflow as tf
# 设置GPU按需增长
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)

# 拿官方的例子改动一下
def my_image_filter():
    conv1_weights = tf.Variable(tf.random_normal([5, 5, 32, 32]),
        name="conv1_weights")
    conv1_biases = tf.Variable(tf.zeros([32]), name="conv1_biases")
    conv2_weights = tf.Variable(tf.random_normal([5, 5, 32, 32]),
        name="conv2_weights")
    conv2_biases = tf.Variable(tf.zeros([32]), name="conv2_biases")
    return None

# First call creates one set of 4 variables.
result1 = my_image_filter()
# Another set of 4 variables is created in the second call.
result2 = my_image_filter()
# 获取所有的可训练变量
vs = tf.trainable_variables()
print 'There are %d train_able_variables in the Graph: ' % len(vs)
for v in vs:
    print v
There are 8 train_able_variables in the Graph: 
Tensor("conv1_weights/read:0", shape=(5, 5, 32, 32), dtype=float32)
Tensor("conv1_biases/read:0", shape=(32,), dtype=float32)
Tensor("conv2_weights/read:0", shape=(5, 5, 32, 32), dtype=float32)
Tensor("conv2_biases/read:0", shape=(32,), dtype=float32)
Tensor("conv1_weights_1/read:0", shape=(5, 5, 32, 32), dtype=float32)
Tensor("conv1_biases_1/read:0", shape=(32,), dtype=float32)
Tensor("conv2_weights_1/read:0", shape=(5, 5, 32, 32), dtype=float32)
Tensor("conv2_biases_1/read:0", shape=(32,), dtype=float32)

2、权值共享代码

import tensorflow as tf
# 设置GPU按需增长
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)

# 下面是定义一个卷积层的通用方式
def conv_relu(kernel_shape, bias_shape):
    # Create variable named "weights".
    weights = tf.get_variable("weights", kernel_shape, initializer=tf.random_normal_initializer())
    # Create variable named "biases".
    biases = tf.get_variable("biases", bias_shape, initializer=tf.constant_initializer(0.0))
    return None


def my_image_filter():
    # 按照下面的方式定义卷积层,非常直观,而且富有层次感
    with tf.variable_scope("conv1"):
        # Variables created here will be named "conv1/weights", "conv1/biases".
        relu1 = conv_relu([5, 5, 32, 32], [32])
    with tf.variable_scope("conv2"):
        # Variables created here will be named "conv2/weights", "conv2/biases".
        return conv_relu( [5, 5, 32, 32], [32])


with tf.variable_scope("image_filters") as scope:
    # 下面我们两次调用 my_image_filter 函数,但是由于引入了 变量共享机制
    # 可以看到我们只是创建了一遍网络结构。
    result1 = my_image_filter()
    scope.reuse_variables()
    result2 = my_image_filter()


# 看看下面,完美地实现了变量共享!!!
vs = tf.trainable_variables()
print 'There are %d train_able_variables in the Graph: ' % len(vs)
for v in vs:
    print v
There are 4 train_able_variables in the Graph: 
Tensor("image_filters/conv1/weights/read:0", shape=(5, 5, 32, 32), dtype=float32)
Tensor("image_filters/conv1/biases/read:0", shape=(32,), dtype=float32)
Tensor("image_filters/conv2/weights/read:0", shape=(5, 5, 32, 32), dtype=float32)
Tensor("image_filters/conv2/biases/read:0", shape=(32,), dtype=float32)
Tensorflow 学习笔记之 共享变量(Sharing Variables) Tensorflow 学习笔记之 共享变量(Sharing Variables)最近两年,谷歌撑腰的深度学习框架Tensorflow发展地如日中天,虽然17年pytorch的出现略微“打压”了一些TF的势头,但TF在深度学习界的地位还是难以撼动的,github上TF的收藏量一直稳在深度学习中前二的位置。个人在4月份开始接触TF,写分类、超分辨网络不亦乐乎。然而,最近从越来越多的TF github项目 阅读详情

相关推荐

绑定压力的计算方法

压强的公式为P=F/S,其中P为ACF要求的本压压强范围,S为受压面积,F为本压压头施加的力。绑定参数需要按线体按压头进行DOE确认,并使用DOE确认好的参数按压头重新绑定标识好送ACF厂商实测固化率、粒子变形的情况,避免绑定参数导致的异常,在绑定参数的设定过程中温度和时间可以使用仪器实测但绑定的压力则需要换算。工程上绑定压力换算的原则是:1、FPC属于柔性物料,柔性物料的受压面积按FPC绑定的受压面积=FPC绑定的长度。一、工程上FOG FPC本压压力换算(柔性材料以挤压的接触面积=受力面积)F=P。

weixin_53757859的博客 1534

Tensorflow2项目实战课程

Tensorflow2.0介绍: tensorflow是GOOGLE在2015年底发布的一款深度学习框架,也是目前全世界用得最多,发展最好的深度学习框架。2019年3月8日,GOOGLE发布最新tensorflow2版本。新版本的tensorflow有很多新特征,更快更容易使用更人性化。但是老版的tensorflow程序在新版本中几乎都无法继续使用,所以我们有必要学习新版tensorflow2的新用法。课程介绍: 我们的这门课程适合小白学习,也适合有基础的同学学习。课程会从0开始学习,从python环境安装,python入门,numpy,pandas,matplotlib使用,深度学习基础,一直讲到tensorflow基础,进阶,项目实战。不管你是0基础小白,想进入AI行业,还是有一定基础,想学习最新的tensorflow2的使用,都适合我们这门课程。讲师介绍: 覃秉丰,物理系毕业转AI行业,想转行同学可以找我聊聊。机器学习、深度学习神经网络领域多年研究开发授课经验,精通算法原理与编程实践;曾完成过多项图像识别、目标识别、语音识别等企业项目,一线实战经验丰富;长期为多家包括世界五百强在内的大型企业总部做人工智能技术内训服务(中国移动、中国银行,华夏银行,中国太平洋,国家电网、中海油等)。上课特点:公式尽量一个一个符号推,代码尽量一行一行讲,希望所有人都能学有所得。

C51:PWM+舵机角度控制

PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%.脉冲宽度调制通过占空比编码模拟信号一个周期内,高电平占据时长的百分比如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制。

qq_73379310的博客 3389

tensorflow-参数、超参数、卷积核权值共享

根据网上查询到的说法,参数就是在卷积神经网络中可以被训练的参数,比如卷积核的权值和偏移等等,而超参数是一些预先设定好并且无法改变的,比如说是卷积核的个数等。 另外还有一个最最基础的概念,就是卷积核的权值共享,这个共享其实指的是一个卷积核在一个输入中的不同位置是共享参数的(意思就是一个输入使用同一个卷积核的参数)。 转载于:https://www.cnblogs.com/IGNB/p/108192...

weixin_30871701的博客 728

S7-200 Smart 控制运动轴(脉冲电机/伺服)教程

S7-200 Smart 控制运动轴(脉冲电机/伺服) 结合本人刚接触触摸屏时候的踩坑经验,编写S7-200 Smart 控制运动轴(脉冲电机/伺服)的详细流程,给刚接触PLC的朋友提供一些经验指导。 本文详细介绍了S7-200 Smart 控制脉冲步进/伺服电机流程,包含接线方法及梯形图。希望对初学者有所帮助

xjbsw0的博客 5万+

MS1030超声波流量计电路实战:如何用15ps精度优化水表设计(附配置代码)

本文深入探讨了如何利用MS1030超声波流量计芯片实现15ps高精度测量,以优化水表设计。文章从系统误差分配出发,详细解析了硬件电路设计要点、SPI通信配置及核心优化技巧,如利用可编程偏置电压和8回波累加功能来提升抗干扰能力与测量稳定性,并附有实用的配置代码示例。

svm4gardener的博客 335

tensorflow学习笔记(五):TensorFlow变量共享和数据读取

1、变量共享   前面已经说过如何进行变量的生成和初始化内容,也用到了命名空间的概念,这里说一下什么是变量共享。当我们有一个非常庞大的模型的时候免不了需要进行大量的变量共享,而且有时候还希望能够在一个地方初始化所有的变量,这就需要tf.variable_scope() 和 tf.get_variable()。   当只有两层的卷积的时候,前面的程序都是定义了两个卷积变量W1和W2(忽略b),而

woaidapaopao的博客 1万+

从零到一:高通QCS6490边缘AI开发板的Linux生态构建与实战避坑指南

本文详细介绍了在高通QCS6490边缘AI开发板上构建Linux生态系统的完整流程,包括开发环境准备、系统镜像构建与烧录、AI运行时环境配置、模型部署优化以及性能调试。重点解析了如何利用Hexagon DSP的高达12 TOPS AI算力,并提供了实战中的避坑指南和性能优化技巧,帮助开发者高效实现边缘AI应用从概念验证到产品落地的全过程。

eee77的博客 770

Tensorflow中的共享变量机制小结

转自:https://cloud.tencent.com/developer/article/1092432今天说一下tensorflow的变量共享机制,首先为什么会有变量共享机制? 这个还是要扯一下生成对抗网络GAN,我们知道GAN由两个网络组成,一个是生成器网络G,一个是判别器网络D。G的任务是由输入的隐变量z生成一张图像G(z)出来,D的任务是区分G(z)和训练数据中的真实的图像(real ...

Candy_GL的博客 3036

告别AT串口线!用STM32F407的USB FS口直连EC800M进行物联网通信

本文介绍了一种创新的物联网通信方案,利用STM32F407的USB FS接口直连EC800M模块,替代传统的AT串口线连接。通过详细的硬件对比、STM32CubeMX配置和USB驱动调试步骤,展示了如何实现更高效的AT指令通信,同时降低硬件复杂度和功耗。

weixin_29189987的博客 706

Qt | QPalette 类(调色版)

Qt | QPalette 类(调色版)

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 776

tensorflow.variable_scope本质与变量共享解析

data1=tf.get_variable(“data1”,shape=[2]) 上述python代码可以为&data1引用或者指针指向了一个tf.Variable对象,如果要使多个个python对象指向同一tf.Variable对象,需要通过variable_scope, 看如下代码: import tensorflow as tf import numpy as np with tf....

qq_33345917的博客 304

RK3588 buildroot 制作的系统增加 docker 支持

RK3588 使用buildroot制作的系统添加 docker 和 docker-compose 的功能

荻夜的博客 1567

Tensorflow 共享变量

共享变量 1. tf.name_scope和tf.variable_scope的区别 对于使用tf.Variable来说,tf.name_scope和tf.variable_scope功能一样,都是给变量加前缀,相当于分类管理,模块化。 对于tf.get_variable来说,tf.name_scope对其无效,也就是说tf认为当你使用tf.get_variable时,你只归属于tf.varia...

sky1blue的博客 323

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TensorFlow之共享变量

在训练模型的时候,通常要用到很多参数,而这些参数通常是通用的(如过滤器),我们当然不希望将通用的参数重复定义占用内存,于是我们可以用tensorflow提供的官方共享参数的方法:tf.variable_scope() 和tf.get_variable() 1、问题 我们创建了一个简单的图像滤波器模型。如果只使用tf.Variable,那么我们的模型可能如下 def my_ima...

kk123k的博客 1269

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

tensorflow变量共享——VariableScope的reuse模式、tf.get_variable()、tf.Variable() 探索

Reusing模式会被子vs继承 tf.get_variable_scope().reuse_variables() print('"'+tf.get_variable_scope().name+'"', tf.get_variable_scope().reuse) with tf.variable_scope('ss'): # ss是默认vs的子vs,故虽然没有使用reuse=True,wit...

pyxiea 7038

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Tensorflow命名空间及变量详细解析(三)

1 Tensorflow命名空间及变量 variable_scope, 新建变量时定义节点(操作)的上下文管理器.解析:新建变量时的管理器,因此对Variable和get_variable均有效,因为Variable是新建变量,get_variable是新建或使用定义的变量,都是"新建"的过程. name_scope 定义Python节点(操作)时的上下文管理器,对get_variable无效,...

天然玩家的博客 1339

tensorflow学习之variable变量

2.variable变量 tf.Variable(): (1)参数说明 tf.Variable是一个Variable类。通过变量维持图graph的状态,以便在sess.run()中执行;可以用Variable类创建一个实例在图中增加变量; Args参数说明: initial_value:Tensor或可转换为Tensor的Python对象,它是Variable的初始值。除非validate...

Leo_whj的博客 1770

变量初始化变量的三种方式

tf.Variable() :一般变量用这种方式定义。 * 可以选择 trainable 类型 * tf.get_variable() :一般都是和 tf.variable_scope() 配合使用,从而实现变量共享的功能。 * 可以选择 trainable 类型 * 【注意:】tf.get_variable()和tf.Variable()不是一回事!!两个的区别有好几处: ①比如,tf.Vari...

hellocsz的博客 1万+

第七节,TensorFlow编程基础案例-TensorBoard以及常用函数、共享变量、图操作(下)...

这一节主要来介绍TesorFlow的可视化工具TensorBoard,以及TensorFlow基础类型定义、函数操作,后面又介绍到了共享变量和图操作。 一 TesnorBoard可视化操作 TensorFlow提供了可视化操作工具TensorBoard。他可以将训练过程中的各种数据展示出来,包括标量,图片,音频,计算图,数据分布,直方图和嵌入式向量。可以通过网页来观察模型的结构和训练过程中各个参...

Graceful_scenery的博客 80

TensorFlow 变量

Variable tensorflow中有两个关于variable的op,tf.Variable()与tf.get_variable()下面介绍这两个的区别 tf.Variable与tf.get_variable() tf.Variable(initial_value=None, trainable=True, collections=None, validate_shape=True, ...

choumaoqi2885的博客 200

TENSORFLOW变量作用域(VARIABLE SCOPE)

举例说明 TensorFlow中的变量一般就是模型的参数。当模型复杂的时候共享变量会无比复杂。 官网给了一个case,当创建两层卷积的过滤器时,每输入一次图片就会创建一次过滤器对应的变量,但是我们希望所有图片都共享同一过滤器变量,一共有4个变量:conv1_weights,conv1_biases,conv2_weights, and conv2_biases。 通常的做法是将这些变量设置为...

qq_19272431的博客 226

Tensorflow:variable变量和变量空间

name_scope: 为了更好地管理变量的命名空间而提出的。比如在 tensorboard 中,因为引入了 name_scope, 我们的 Graph 看起来才井然有序。 variable_scope: 大部分情况下,跟 tf.get_variable() 配合使用,实现变量共享的功能。with tf.variable_scope('scopename', reu...

皮皮blog 5112

一文搞懂TensorFlow的变量创建

一文搞懂TensorFlow的变量创建 在TensorFlow中创建变量,主要使用的函数是:tf.Variable()和tf.get_variable()。这两个函数都比较常用,看懂这两个函数后,在调试代码时会更顺利一些。下面简单介绍一下这两个函数。 两个函数的简单介绍 (1)tf.Variable(initial value, [name]) ([] - 表示可选) 功能:生成一个新的初始值为...

louishao的博客 1185

tensorflow之变量作用域与变量共享(name_scope,variable_scope,get_variable,Variable)

tensorflow之变量作用域与变量共享(name_scope,variable_scope,get_variable,Variable) 1. tf. get_variable() 与 tf.Variable()的区别 tf. get_variable() :在创建变量时会查名字,如果给的名字在之前已经被别的变量占用,则会报错,不会创建相应变量。 tf.Variable():在创建变量时...

鲲鹏望舒 910

tensorflow变量作用域tf.variable_scope介绍

tensorflow变量作用域tf.variable scope介绍举例说明tf.get_variable()工作机制tf.variable_scope理解 举例说明 TensorFlow中的变量一般就是模型的参数。当模型复杂的时候共享变量会无比复杂。 官网给了一个case,当创建两层卷积的过滤器时,每输入一次图片就会创建一次过滤器对应的变量,但是我们希望所有图片都共享同一过滤器变量,一共有4个变...

帅帅Go 1万+
上一篇: Word2Vec原理、训练算法介绍
下一篇: 常用机器学习算法优缺点
data_scientist
博客等级 码龄10年 52粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值