Keras 使用 mask 冻结特定权重

2024-04-26

我是 Keras 的新人。我想实现一个并非所有权重都会更新的层。例如,在下面的代码中,我想要dilation图层将以某些中心权重永远不会更新的方式进行更新。例如,每个特征矩阵(共 1024 个)的形状dilation层是448, 448和一块8x8所有特征矩阵的中心永远不会更新,即8x8block 是特征矩阵的(不可训练的)掩模。

input_layer=Input(shape=(896,896,3))
new_layer = Conv2D(32, kernel_size=(3,3), padding="same", activation='relu', kernel_initializer='he_normal')(input_layer)
new_layer = MaxPooling2D(pool_size=(2, 2), strides=(2,2), padding='same', data_format=None)(new_layer)
new_layer = Conv2D(64, kernel_size=(3,3), padding='same', activation='relu', kernel_initializer='he_normal')(new_layer)
new_layer = Conv2D(1024, kernel_size=(7,7), dilation_rate=8, padding="same", activation='relu', kernel_initializer='he_normal', name='dialation')(new_layer)
new_layer = Conv2D(32, kernel_size=(1,1), padding="same", activation='relu', kernel_initializer='he_normal')(new_layer)
new_layer = Conv2D(32, kernel_size=(1,1), padding="same", activation='relu', kernel_initializer='he_normal')(new_layer)

model = Model(input_layer, new_layer)

我正在尝试使用 Keras 的custom layer [link] https://keras.io/layers/writing-your-own-keras-layers/,但我很难理解。任何人都请帮忙。

UPDATE: 为了更好地理解,我添加了下图。膨胀层包含 1024 个特征。我希望每个特征的中间区域是不可训练的(静态)。


对于这两种情况都使用此掩码:

mask = np.zeros((1,448,448,1))
mask[:,220:228,220:228] = 1

替换部分功能

如果将部分特征替换为常量值,这意味着该特征将是静态的,但它仍然会参与反向传播(因为图像的这部分权重仍然会相乘并求和,并且存在连接)

constant = 0 (will annulate kernel, but not bias) 

def replace(x):
    return x*(1-mask) + constant*mask

#before the dilation layer
new_layer=Lambda(replace)(new_layer) 

保持特征值,但停止反向传播

这里,膨胀层及以后的权重会正常更新,但膨胀层之前的权重不会受到中心区域的影响。

def stopBackprop(x):
    stopped=K.stop_gradients(x)
    return x*(1-mask) + stopped*mask

#before the dilation layer
new_layer=Lambda(stopBackprop)(new_layer) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keras 使用 mask 冻结特定权重 的相关文章

随机推荐

  • SSIS 与 DTS 性能

    这么晚了才这么做似乎很疯狂 但是 我正在使用 Rocket Software UniVerse 源和 SQL 目标重建一些 ETL 基础设施 旧的目标平台是 Windows Server 2003 上的 SQL 2000 新平台是 Wind
  • 如何检查一个点是否在给定半径内?

    我有以下代码 需要很长时间才能执行 pandas 数据框df and df plants非常小 小于 1Mb 我想知道是否有任何方法可以优化这段代码 import pandas as pd import geopy distance imp
  • 如何在 Ruby 中获取从位置 N 到最后一个字符的子字符串?

    我想从字符串中获取从位置 N 到字符串末尾的子字符串 在 Ruby 中如何做到这一点 只需将字符串切片即可 string N 1
  • 简单版jQuery live函数

    是否有可能在任何地方获得一个纯 Javascript 函数用于事件处理程序 其功能与 jQuery 类似live 我需要能够将事件附加到尚未创建的对象 但由于依赖于 jQuery 核心 jquery livequery 和 jquery e
  • 如何使用Python和Pandas在时间翻转时添加24小时

    我必须分析一些日志 并基于此 我必须计算一些东西 但我坚持了一件事 在这里 我尝试以简单的形式重新创建我的问题 假设我有以下日志 堆栈溢出 txt file 23 58 03 458 23 58 13 446 23 58 23 447 23
  • Visual Studio 网站中的项目设置实际存储在哪里?

    在 VS2010 中使用网站 而不是 Web 应用程序 因此没有 csproj 文件 右键单击解决方案资源管理器中的 站点 节点并选择 属性页 会弹出一个对话框 其中包含 引用 生成 辅助功能 启动选项 MSBuild 选项 和 Silve
  • 下载 VSTS 附件

    有人知道如何使用 C 库检索附件 ID 并从 VSTS 下载 WorkItem 附件吗 我已经审查了附件样本 https github com Microsoft vsts dotnet samples blob master Client
  • Symfony ArrayCollection 与 PersistentCollection

    据我了解 当您通过存储库查询数据库时 您会得到 PersistentCollection 而当您使用实体时 您会得到 ArrayCollection 因此 考虑到我的用户实体有一对多的自引用关系 在我的用户实体中 我有一个 setChild
  • WPF 中的多列树视图 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道我在哪里可以获得 WPF 中的多列树视图之类的控件吗 夏普开发 http www icshar
  • Xalan XSLT 多个输出文件?

    我只是想知道 是否可以使用 Xalan 将单个输入 XML 文件的处理输出到多个其他文件 我不一定必须这样做 我知道我可以使用其他工具来做到这一点 如 Saxon 和 或我可以处理不同的文件以获得不同的输出 我只是想知道我必须使用哪些选项来
  • 无法计算表达式 - Visual Studio 调试模式

    当尝试单步执行代码并使用 Visual Studio 中的立即窗口或监视窗口时 我不断收到以下信息 无法评估表达式 我正在使用 Visual Studio 2008 搜索论坛 有很多关于使用重载的 Response Redirect 并将
  • 如何确定单元测试的测试用例?

    我刚刚开始单元测试 并编写了一些简短的测试来检查名为 isPrime 的函数是否正常工作 我有一个测试来检查该函数是否正常工作 并有一些数字和预期返回值形式的测试数据 我应该测试多少 我如何决定测试哪个 这里的最佳实践是什么 一种方法是生成
  • 从另一个 Java 小程序访问 Java 小程序

    Web 应用程序使用 Java 小程序 该小程序将用户提交的密码存储在私有属性中 并在多个公共方法中使用该属性 我想知道从相同或不同网站加载的另一个 Java 小程序是否可以调用该小程序的方法或可能访问包含密码的私有属性 不同的小程序是在相
  • 当您在 REST 中需要更多动词时该怎么办

    还有一个类似的question https stackoverflow com questions 2001773 understanding rest verbs error codes and authentication对我来说 但讨
  • “node-sass”用法已弃用,并将在未来的主要版本中删除

    当我从 Angular 升级时8 to 11我面临这个警告 node sass 用法已弃用 并将在未来的主要版本中删除 要选择退出已弃用的行为并开始使用 sass 请卸载 node sass 谁能帮我提前致谢 完整的错误消息是 node s
  • .Net Core 本地化视图:Linq 表达式中的 IViewLocalizer

    我正在 net core 中编写 mvc 应用程序 我遇到本地化问题 我不知道如何将 IViewLocalizer 添加到我的网格视图中 这是我的代码 using NonFactors Mvc Grid using Microsoft As
  • 流星刀片模板在 for 循环中抛出“同一分支中的第二个地标”异常

    我有一个 for 循环 我想在其中包含模板视图 表 刀片 game h1 table name if table playerSitting a btn btn danger stand href Stand table for var i
  • 如何使用 google-apps-script 以 Google 表单导入“文件上传”模块

    I am able to create a small google form using google apps script Which includes texts radio buttons etc But how to inclu
  • 身份框架用户锁定

    我尝试在 3 次登录尝试失败后锁定用户登录 5 分钟 我已将这 3 行添加到App Start IdentityConfig cs public static ApplicationUserManager Create method man
  • Keras 使用 mask 冻结特定权重

    我是 Keras 的新人 我想实现一个并非所有权重都会更新的层 例如 在下面的代码中 我想要dilation图层将以某些中心权重永远不会更新的方式进行更新 例如 每个特征矩阵 共 1024 个 的形状dilation层是448 448和一块