Keras根据阈值将中间层的输出设置为0或1

2024-01-02

我有一个模型,其中有“分类”和“回归”之类的部分。我使用乘法层合并它们。在执行乘法之前,我想根据阈值将分类部分的输出设置为 0 或 1。我尝试将 Lambda 层与自定义函数一起使用,如下所示,但是我遇到了各种错误,并且我对这些错误一无所知。在我进行过程中一一解决它们并不能增加我的理解。谁能解释如何定义修改值的自定义 Lambda 层函数?

我当前的 Lambda 层函数:(由于无法工作FailedPreconditionError: Attempting to use uninitialized value lstm_32/bias)

def func(x):    
    a = x.eval(session=tf.Session())
    a[x < 0.5] = 0
    a[x >= 0.5] = 1
    return K.variable(a)

回归部分:

input1 = Input(shape=(1, ))
model = Sequential()
model.add(Embedding(vocab_size + 1, embedding, input_length=1))
model.add(LSTM(hidden, recurrent_dropout=0.1, return_sequences=True))
model.add(LSTM(6))
model.add(Reshape((3,2)))
model.add(Activation('linear'))

分类部分:

input2 = Input(shape=(1, ))
model2 = Sequential()
model2.add(Embedding(vocab_size + 1, embedding, input_length=1))
model2.add(LSTM(hidden, recurrent_dropout=0.1, return_sequences=True))
model2.add(LSTM(1))
model2.add(Activation('sigmoid'))
model2.add(???)  # need to add 0-1 thresholding here

合并两部分:

reg_head = model(input1)
clf_head = model2(input2)    
merge_head = multiply(inputs=[clf_head, reg_head])
m2 = Model(inputs=[input1, input2], outputs=merge_head)

In func, 你不能eval张量。

使用张量的想法是,它们在整个模型中从头到尾保持“连接”(他们称之为图表)。这种连接允许模型计算梯度。如果您评估张量并尝试使用这些值,您将断开连接。

此外,为了获取张量的实际值,您需要输入数据。并且输入的数据只有在调用时才会存在fit, predict,以及类似的方法。在构建阶段没有数据,只有表示和连接。

仅使用张量的可能函数是:

def func(x):

    greater = K.greater_equal(x, 0.5) #will return boolean values
    greater = K.cast(greater, dtype=K.floatx()) #will convert bool to 0 and 1    
    return greater 

不过要小心!这将是不可微分的。从现在开始,这些值将在模型中被视为常量。这意味着在训练期间不会更新此点之前的权重(您不会通过以下方式训练分类模型)m2,但您仍然可以从中训练它model2)。有一些奇特的解决方法,如果您需要它们,请写评论。

在一个中使用这个函数Lambda layer:

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

Keras根据阈值将中间层的输出设置为0或1 的相关文章

  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 交换keras中的张量轴

    我想将图像批次的张量轴从 batch size row col ch 交换为 批次大小 通道 行 列 在 numpy 中 这可以通过以下方式完成 X batch np moveaxis X batch 3 1 我该如何在 Keras 中做到
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • 使用 OR 子句的 SQL 连接查询

    在创建 SQL 查询时需要帮助 有点困惑所以问问题 情况如下 我有一张表说 EmpInfo EmpFirstName EmpLastName EmpID EmpGender EmpDOB EmpAddress表2 EmpMasterID E
  • 使用 if else 添加删除类中的错误[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 这是我的 JavaScript 代码 lable item click function if this hasClass label ac
  • 在 for 循环中从缓冲区指针将元素添加到数组指针中

    How to c中通过指针将字符串字符数组中的元素添加到另一个字符数组 下面我给出了代码 请更正它并提出任何建议 因为我没有得到满意的答案 我只想通过仅使用那里的指针从 缓冲区 数组中复制 复制 数组中的相同字符串 char buffer
  • Visual Studio 2015 未检测到构建的项目,在错误的目录中查找输出

    每次我要求 VS 构建解决方案时 我都会构建几个项目 构建日志中的相关行 项目 MyProject SolutionFolder MyProject 1 0 0 MyProject 不是最新的 缺少输出文件 d MyProject 1 0
  • 使用 PHP 将 youtube api 返回的时间格式转换为秒

    所以从 api 接收到的持续时间 时间格式是这样的 PT1H1M6S 我如何使用任何 php 函数将其转换为秒 这是我在 Google 遇到的有关如何将 ISO 8601 值转换为秒的最佳解决方案 1 表示不使用 preg 功能 我认为适合
  • D3.js - 从 chrome 加载 csv 文件

    我有一个带有 dc js d3 js crossfilter js 和 ndx csv 文件的 webProject 当我从 Visual Studio 将项目运行到 Chrome 中时 一切正常 现在 在构建项目并复制到其他计算机后 运行
  • 膨胀类 ir.noghteh.JustifiedTextView 时出错

    我将会有一个justified textview与波斯语和大部分这Android TextView 对齐文本 https stackoverflow com questions 1292575 android textview justif
  • 使用 ng-click 调用两个不同的函数

    有什么方法可以让我得到ng click调用两个函数 我想要类似的东西 ng click search match 而不是我现在的样子 ng click search 您可以使用 调用多个函数 ng click search match
  • 在画布上拖动元素

    我将一个元素作为字符串绘制到画布上 然后 我希望能够单击该元素 或点击移动设备 并将其拖动 我现在拥有的是
  • 使用 python3.8 和 Ubuntu 20.04 设置 VTK

    我最近将系统更新到 Ubuntu 20 04 我的 python 现在是 3 8 从此我的一切import vtk线路不行 ModuleNotFoundError No module named vtk 我努力了apt get python
  • 使用“书签行”选项的 Notepad++ 搜索不会为与多行正则表达式匹配的所有行添加书签,而只会为第一个行添加书签

    我想过滤属于特定用户的日志中的所有内容 使用以下模式并启用 matches newline 选项 我可以匹配我正在寻找的所有内容 但是当我要求 Notepad 为这些行添加书签以便我可以复制它们时 会发生一些奇怪的事情 n userB 0
  • Yesod开发服务器仅侦听ipv6

    我正在使用 yesod 0 9 2 2 运行 cabal install yesod devel 但它仅使用 ipv6 进行监听 有谁知道如何配置它来侦听 ipv4 吗 我在 Windows 7 上运行它 Thanks 到目前为止 您所描述
  • Celery 结果错误“args 必须是列表或元组”

    我正在运行一个 Django 网站 并且刚刚让 Celery 运行 但我遇到了令人困惑的错误 以下是代码的结构 在测试 py中 from tasks import from celery result import AsyncResult
  • gethostbyname 双网络接口,选择使用哪一个

    我有一个 C 程序 需要连接到服务器并发送 tcp 有效负载并等待响应 这对于正常使用来说效果很好 但由于我有两个不同的网络接口 让我们在运行程序的计算机上将它们称为 if0 和 if1 有时其中一个网络接口无法转发流量 不幸的是 这是我无
  • 从同一组织中的一个 API 代理调用另一个 API 代理

    我的组织中有一个现有的 API 代理 我想在其他 API 代理中调用它 还有其他方法可以实现吗 API 代理开发和设计中的考虑因素之一是不要实现从一个 API 代理到同一组织中的另一个 API 代理的 ServiceCallout 或者按照
  • C 中 printf 中未加引号的“PRIu32”是什么?

    我正在查看以下代码 include
  • DataContract 与 XmlType

    作为尝试学习 WCF 的一部分 我正在阅读有关序列化的内容 我正在努力理解如何控制 NET 3 5 中的序列化 例如 我有一个带有一些公共属性的简单类 通过向该类添加 DataContract 属性 我可以在序列化时控制该类的命名空间和名称
  • MySQL 对 DELETE 语句的限制

    我针对最近遇到的错误整理了一个测试表 它涉及在尝试从 MySQL 表中删除单个记录时使用 LIMIT 我所说的错误是 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 1 行 LIMIT 1 附近使用的正确
  • javascript中如何计算字符串的行数

    我想计算字符串中的行数 我尝试使用这个 stackoverflow 答案 lines str split r n r n return lines length 在此字符串 最初是一个缓冲区 上 GET HTTP 1 1 Host loca
  • Keras根据阈值将中间层的输出设置为0或1

    我有一个模型 其中有 分类 和 回归 之类的部分 我使用乘法层合并它们 在执行乘法之前 我想根据阈值将分类部分的输出设置为 0 或 1 我尝试将 Lambda 层与自定义函数一起使用 如下所示 但是我遇到了各种错误 并且我对这些错误一无所知