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 的相关文章

  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 是否可以在 IPython 控制台中显示 pandas 样式?

    是否可以显示熊猫风格 https pandas pydata org pandas docs stable user guide style html在 iPython 控制台中 Jupyter 笔记本中的以下代码 import panda
  • pandas read_csv 之前预处理数据文件

    我使用 SAP 的数据输出 但它既不是 CSV 因为它不引用包含其分隔符的字符串 也不是固定宽度 因为它具有多字节字符 它是一种 固定宽度 字符 为了将其放入 pandas 我当前读取文件 获取分隔符位置 对分隔符周围的每一行进行切片 然后
  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 在Python中将大文件(25k条目)加载到dict中很慢?

    我有一个大约有 25000 行的文件 它是 s19 格式的文件 每行就像 S214780010 00802000000010000000000A508CC78C 像这样的事情怎么样 我做了一个测试文件 只有一行S21478001000802
  • 在 python 中发送标头[重复]

    这个问题在这里已经有答案了 我有以下 python 脚本 我想发送 假 标头信息 以便我的应用程序就像 Firefox 一样运行 我怎么能这么做呢 import urllib urllib2 cookielib username passw
  • 无法使用Python请求会话模块登录网站

    我刚刚开始进行网络抓取 对于我的第一个项目 我尝试使用 requests Session 登录 artofproblemsolving com 并访问另一个用户的帐户 这是我的代码 import requests LOGIN URL htt
  • argparse 不检查位置参数

    我正在创建一个脚本 它使用 argparse 接受位置参数和可选参数 我已经阅读了 Doug 的教程和 python 文档 但找不到答案 parser argparse ArgumentParser description script t
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 使用 python 从 CSV 创建字典

    我有一个 CSV 格式的文件 其中 A B 和 C 是标题 我如何以Python方式将此CSV转换为以下形式的字典 A 1 B 4 C 7 A 2 B 5 C 8 A 3 B 6 C 9 到目前为止我正在尝试以下代码 import csv
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • Python FTP下载550错误

    我编写了一个 ftp 爬虫来下载特定文件 它会一直工作 直到找到要下载的特定文件 然后抛出此错误 ftplib error perm 550 该文件存在于我的下载文件夹中 但文件大小为 0 kb 我需要转换某些内容才能下载吗 我可以访问 f
  • 如何在 python 中使用交叉验证执行 GridSearchCV

    我正在执行超参数调整RandomForest如下使用GridSearchCV X np array df features all features y np array df gold standard labels x train x
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • “KMeans”对象没有属性“k”

    我使用 Yellowbrick 包绘制数据集的肘部曲线 以使用 KMeans 作为模型找到数据集的最佳簇数 我正在使用 Scikit learn KMeans 和 Yellowbrick kelbowvisualizer 函数 生成了肘部曲
  • 如何将 pandas DataFrame 转换为 TimeSeries?

    我正在寻找一种将 DataFrame 转换为 TimeSeries 而不拆分索引和值列的方法 有任何想法吗 谢谢 In 20 import pandas as pd In 21 import numpy as np In 22 dates
  • 如何将 django ModelForm 字段显示为不可编辑

    接受我的初步教训django ModelForm 我想让用户能够编辑博客中的条目 BlogEntry has a date postedTime title and content 我想向用户展示一个编辑表单 其中显示所有这些字段 但仅包含
  • Django 中使用外键的抽象基类继承

    我正在尝试在 Django 支持的网站上进行模型继承 以遵守 DRY 我的目标是使用一个名为 BasicCompany 的抽象基类来为三个子类提供通用信息 Butcher Baker CandlestickMaker 它们位于各自的应用程序
  • 如何使用 keras.backend.gradients() 获取梯度值

    我试图获得 Keras 模型的输出相对于模型输入 x 而不是权重 的导数 似乎最简单的方法是使用 keras backend 中的 梯度 它返回梯度张量 https keras io backend https keras io backe
  • 在Python中使用os.makedirs创建目录时出现权限问题

    我只是想处理上传的文件并将其写入工作目录中 该目录的名称是系统时间戳 问题是我想以完全权限创建该目录 777 但我不能 使用以下代码创建的目录755权限 def handle uploaded file upfile cTimeStamp

随机推荐

  • 使用 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 层与自定义函数一起使用 如下所示 但是我遇到了各种错误 并且我对这些错误一无所知