当前位置: 首页 > wzjs >正文

网站编辑面试问题和答案seo网站地图

网站编辑面试问题和答案,seo网站地图,怎么搭建自己公司网站,广东深圳网络科技有限公司文章目录 概要__init__()build()add_weight() 概要 keras.layers.Layers是所有层对象的父类,在keras.layers下所有实现类都是其子类,自定义层时需要继承该类。 init() Layer的构造函数,需要注意两个参数trainable和name trainable:指定该层…

文章目录

    • 概要
    • __init__()
    • build()
    • add_weight()

概要

keras.layers.Layers是所有层对象的父类,在keras.layers下所有实现类都是其子类,自定义层时需要继承该类。

init()

Layer的构造函数,需要注意两个参数trainablename
trainable:指定该层所有的权重参数是否参与训练更新过程。为False时,该层所有权重参数被冻结,不参与训练,常用于微调。默认为True。
name:指定该层的名字,这在模型参数保存时很有用,可以根据指定名字找到对应层的所有权重参数。

import keras.layers as layers
import tensorflow as tfclass MLP(layers.Layer):def __init__(self, units, **kwargs):super().__init__(name="my_MLP", **kwargs)self.dense_1 = layers.Dense(units, trainable=False, name="MLP_1")self.dense_2 = layers.Dense(units, name="MLP_2")def call(self, inputs, *args, **kwargs):x = self.dense_1(inputs)x = self.dense_2(x)return xclass Projection(layers.Layer):def __init__(self, units, kernel_size, **kwargs):super().__init__(name="my_Projection", **kwargs)self.Conv1d = layers.Conv1D(units, kernel_size, name="ConV_1d")self.mlp = MLP(units)self.dense = layers.Dense(units, trainable=False, name="Dense")def call(self, inputs, *args, **kwargs):x = self.Conv1d(inputs)x = self.mlp(x)x = self.dense(x)return xif __name__ == '__main__':inputs = tf.random.uniform((1, 128, 3))projection = Projection(units=16, kernel_size=3)projection(inputs)trainable_variables = projection.trainable_variablesprint("可训练参数:")for i in range(len(trainable_variables)):print(trainable_variables[i].name)print("不可训练参数:")non_trainable_variables = projection.non_trainable_variablesfor i in range(len(non_trainable_variables)):print(non_trainable_variables[i].name)
可训练参数:
my_Projection/ConV_1d/kernel:0
my_Projection/ConV_1d/bias:0
my_Projection/my_MLP/MLP_2/kernel:0
my_Projection/my_MLP/MLP_2/bias:0
不可训练参数:
my_Projection/my_MLP/MLP_1/kernel:0
my_Projection/my_MLP/MLP_1/bias:0
my_Projection/Dense/kernel:0
my_Projection/Dense/bias:0

自定义了两个层MLP类和Projection类,其中MLP作为Projection的成员变量。super().init()调用其父类Layer的构造函数,并指定name参数和trainable参数。然后分别打印可训练参数和不可训练参数。
注意 : 只用当层对象(Layer)调用完build()方法后,层中才存在权重参数(否则打印权重参数时,为空集)。当第一次调用call()方法时,build()方法会在call()调用之前先执行,所以代码中在打印权重参数之前,先调用了call方法(projection(inputs))。
另外权重参数kernel和bias的命名方式和文件路径类似,它反应了Projection类与其成员变量的包含关系。

如果想查看Projection类中某一层kernel和bias的具体参数,可通过.numpy()(替换.name)打印出。

build()

生成并初始化所有层中的权重参数。自定义层时,可以重写该方法,定义自己需要的权重参数。

class Stacked_Sum(tf.keras.layers.Layer):def __init__(self, dim_output):super(Stacked_Sum, self).__init__()self.num_outputs = dim_outputdef build(self, input_shape):self.kernel = self.add_weight(name="kernel",shape=[int(input_shape[-2]),int(input_shape[-1]),self.num_outputs])def call(self, inputs):x = tf.einsum('abcd, cde->abe', inputs, self.kernel)return tf.keras.activations.swish(x)

在build()方法中通过add_weight()添加了一个新的kernel, 并在call方法中使用,这个kernel的参数会在训练中不断更新。其中input_shape是call方法的输入的shape。build()方法在call()调用之前自动被调用。

add_weight()

可以在build方法中添加与输入shape有关的权重参数,也可以在__init__方法中添加与输入无关的权重参数

class Stacked_Sum(tf.keras.layers.Layer):def __init__(self, **kwargs):super().__init__(**kwargs)self.kernel = self.add_weight(name="my_kernel",shape=[4, 3])def call(self, inputs):return inputs

上述代码是在init方法中添加与输入无关的权重参数。

http://www.dtcms.com/wzjs/781008.html

相关文章:

  • 如何弄一个自己的网站广州越秀区美食攻略
  • 云南网站做的好的公司哪家好汤阴有没有做网站的公司
  • 网站工程是干啥的左右布局的网站
  • 山东省建设厅招标网站首页学习做网站大概多久时间
  • 高端设计网站公司公司网站文件夹设计
  • 重庆微网站开发公司教做衣服的网站有哪些
  • 揭阳网站免费建站清理空壳网站
  • 芜湖那里帮人做销售网站梧州网站建设制作
  • 温州企业网站建设公司wordpress无法超链接
  • 做o2o网站需要多少钱苏州城乡建设网站查询系统
  • 百合网网站建设与策划网店推广的渠道有哪些
  • 成交功能网站那个网站可以帮助做数学题
  • 投资建设个什么网站好WordPress怎么导入大数据库
  • 网易建站模板怎么在电脑上建立自己的网站
  • 优化网站建设做网站怎么挣钱最快
  • 中国山东网站建设辅助购卡网站怎么做
  • 南宁网站建设怎么样给外国小孩 做 英语题用的网站
  • 烟台网站制作开发北京制作网站公司排名
  • wordpress系统邮箱地址外贸网站优化
  • 网站制作公司费用营销网站的优势是什么意思
  • 服装网站首页设计服务企业建设网站
  • 黄陂区建设局网站宁波网站建设方案推广
  • 建设局全称悟空建站seo服务
  • php中英文网站模板郑州自助建站软件
  • gta 买房网站建设中h5网站建设
  • 广州高端网站建设公司东莞市门户网站建设怎么样
  • 中建南方建设集团官方网站软件开发的生命周期
  • 站群wordpress主题离线编辑
  • 福州英文网站建设wordpress网页设计
  • 商城系统网站模板阿里巴巴网站分类板块做全屏