创建可训练权重的 Keras 层

2024-02-22

edit请参阅底部以了解我如何解决此问题

我写了自己的Keras层,其构建方法如下:

class Multed_Weights(Layer):

def __init__(self, input_dim, output_dim, **kwargs):
    self.output_dim = output_dim
    self.input_dim = input_dim

    super(Multed_Weights, self).__init__(**kwargs)

def build(self, input_shape):
    # Create a trainable weight variable for this layer.
    self.kernel = self.add_weight(name='kernel',
                                  shape=(self.input_dim, self.output_dim),
                                  initializer=RandomNormal(mean=0., stddev = 0.05, seed = None),
                                  trainable=True)
    super(Multed_Weights, self).build(input_shape)  # Be sure to call this somewhere!
    print("mult kernel has shape " + str(K.int_shape(self.kernel)))

def call(self, x, **kwargs):
    return Dot(axes = [1,0])([x, self.kernel])

def compute_output_shape(self, input_shape):
    output_shape = (None, self.output_dim)
    print("the output shape of multed weights is "+ str(output_shape))
    return output_shape

这就是我正在尝试做的事情。下列的https://arxiv.org/pdf/1503.08895.pdf https://arxiv.org/pdf/1503.08895.pdf(参见第 2 页上面的引文 (3))我解决了之前的问题,但现在我遇到了另一个问题。

“InvalidArgumentError(请参阅上面的回溯):不兼容的形状:[150,128] 与 [150,10000] [[节点:训练/SGD/gradients/multed__weights_1/dot_2/Mul_grad/BroadcastGradientArgs = BroadcastGradientArgs[T=DT_INT32, _class=["loc:@multed__weights_1/dot_2/Mul"], _device="/job:localhost/replica:0 /任务:0/设备:CPU:0“](训练/SGD/梯度/multed__weights_1/dot_2/Mul_grad/形状,训练/SGD/梯度/multed__weights_1/dot_2/Mul_grad/Shape_1)]]”

所以问题仍然是这个类造成的。我的批量大小是 128,所以看来错误来自这个没有批量大小的权重矩阵。但它不允许我用 shape=(None, ... , ...) 创建它,所以我不知道该怎么做。

update我太关注这一层的动态批量大小。一旦我将形状硬编码为 (128, self.input_dim, self.output_dim),提前知道我的批量大小是 128,它就工作得很好。尽管如此,我意识到这个方法在 128 个批次中的每一个批次中都会有不同的权重,所以也许我应该像以前一样设置形状,然后执行 RepeatVector 128 次。我怀疑 128 个中的每一个都会包含对相同权重的引用,而不是创建新的权重,但我不确定。


None

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

创建可训练权重的 Keras 层 的相关文章

随机推荐

  • 通过 API 迭代 mailchimp 模板中的集合

    是否有机会通过 API 填写可重复的部分 例如 我有产品列表 我只想在模板中包含一次产品部分 然后迭代集合 我已经阅读了之前关于该主题的讨论并进行了谷歌搜索 但我仍然不明白是否可以通过 API 实现 div h2 Title h2 p Bo
  • 在 Windows(Vista 和 XP)上安装 Exuberant Ctags

    我想在工作时在 Vista 也可能是 XP 笔记本电脑 上使用 Exuberant Ctags 关于操作系统没有选择 我使用 GVim 而不是我的同事推荐的 Flex Builder 因为 FB 有问题并且无论如何也不能做 GVim 所做的
  • 是否有一个 create() 供 vuex 操作自动调度

    我在 vuex 中有一个操作 我想在 vuex 本身而不是组件中自动调度 我创建了一个通知栏 它通过多个页面上的不同通知进行更改 当我切换页面时 通知不是从头开始 而是创建了一个商店来设置要显示的通知 我想从 vuex 内部而不是从组件内部
  • ICU自定义音译

    我希望利用 ICU 库进行音译 但我想为一组特定的自定义音译提供自定义音译文件 以便在编译时合并到 ICU 核心中 以便在其他地方以二进制形式使用 出于兼容性原因 我正在使用 ICU 4 2 的源代码 据我了解 从他们网站的 ICU 数据页
  • 理解 scala:柯里化

    我最近开始学习 Scala 并遇到了柯里化 从这个答案post https stackoverflow com questions 17768686 currying example in scala 这段代码片段 def sum a In
  • MVC 3:如何学习如何使用 NUnit、Ninject 和 Moq 进行测试?

    我的问题的简短版本 任何人都可以向我指出一些好的 详细的资料来源吗 可以学习如何在我的 MVC 3 应用程序中实现测试 使用 NUnit Ninject 2 和起订量 这里有人可以帮助我澄清控制器存储库如何 解耦 模拟和依赖注入一起工作吗
  • 在首页以外的其他页面中显示图像时出现问题(wordpress/html/css)

    您好 我有一个正在为客户做的小网站 我使用了 html css 网站并使用空白主题将其转移到 WordPress 到目前为止一切顺利 如果您愿意 请查看 energyshop se 在起始页中显示了顶部的两个图像 但没有显示其余选项卡 为什
  • firestore 权限缺失或不足

    我收到错误 Firebase 缺少或权限不足 代码 const demoCollectionRef this db collection items 返回 demoCollectionRef add item 我认为这个错误是由于 angu
  • Android Studio 3.0.1 上的 Gradle 项目同步失败

    我是第一次在笔记本电脑上安装 Android Studio 3 0 1 但无法创建我的第一个 Hello World 应用程序 我收到以下错误 Create process failed error 216 Error Consult yo
  • div 下面仍然触发 click 事件

    这是我正在构建的 PhoneGap 应用程序 我正在我的笔记本电脑上进行测试 然后使用 PhoneGap cli 在 iPhone 上进行测试 我有一个 openlayers 3 地图 上面记录了点击事件 我还有一个 div 当菜单显示时
  • 在 Android 中显示撰写短信视图

    我想用 Android 发送短信 发送短信的目的是什么 我想显示撰写短信视图 并在消息字段中传递我的预定义文本 您可以使用以下代码 startActivity new Intent Intent ACTION VIEW Uri parse
  • 自动从网页中提取提要链接(atom、rss等)[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个巨大的 URL 列表 我的任务是将它们提供给一个 python 脚本 该脚本应该吐出提要 UR
  • Android:当软输入键盘出现时,Recyclerview 不会调整大小

    我有一个包含片段的活动 并且该片段包含自定义视图 自定义视图包含一个编辑文本 其正下方是一个高度为 match parent 的回收视图 当用户将焦点放在编辑文本上时 会出现一个软输入键盘 不幸的是 该键盘隐藏了其下方一半的回收视图 我希望
  • 如何从mysql表中获取自增字段名或主键字段名?

    在PHP中 如何获取已设置为在添加新记录时自动递增的字段的字段名称 在大多数情况下 它与表的 PRIMARY KEY 相同 但不一定总是如此 所以这个问题有两部分 第二部分分支为第三部分 1 如何获取自增字段名称 2 如何获取primary
  • Android Gradle 支持库必须使用相同版本

    我已经查看了所有其他问题并用谷歌搜索了不可能的问题 但我找不到使用正确依赖项的方法 下面是我的应用程序 Gradle 构建文件 buildscript repositories google jcenter dependencies cla
  • 从解决方案中删除 TFS 连接

    如何将解决方案制作为干净副本而不映射到 TFS 问题是当我尝试打开它时会显示此消息 我想在没有 TFS 连接的情况下正常打开它 要完全删除 TFS 源代码管理绑定 请执行以下两个步骤 转到解决方案的文件夹 查找并删除所有文件 vssscc
  • 由于 libssl 依赖,`apt-get install librdkafka1` 在 Debian 9.x 上失败

    Basic apt get install librdkafka1在 Debian 8 x 上工作 但在 Debian 9 x 上失败 这看起来像是关于 libssl 的依赖版本问题 Debian 8 x 有 libssl1 0 0 Deb
  • 为什么需要 islower() 及其朋友来处理 EOF?

    Why are islower 以及需要处理的朋友EOF 然而putchar 朋友们不需要吗 为什么不是islower 治疗int as unsigned char 就像情况一样putchar 这是完全有道理的 因为我们必须检查EOF无论如
  • libstdc++.so.6:找不到版本“GLIBCXX_3.4.20”

    为了将 gt 2GB 的原始读数上传到 Genebank 上的 SRA 我在 ubuntu 16 04 上安装了 aspera connect 插件 但按照基因库 SRA 门户上的说明 该插件并未弹出 当我在本地初始化插件时 我在终端上收到
  • 创建可训练权重的 Keras 层

    edit请参阅底部以了解我如何解决此问题 我写了自己的Keras层 其构建方法如下 class Multed Weights Layer def init self input dim output dim kwargs self outp