Keras 在激活函数之前检索节点的值

2024-03-21

想象一个完全连接的神经网络,其最后两层具有以下结构:

[Dense]
    units = 612
    activation = softplus

[Dense]
    units = 1
    activation = sigmoid

网络的输出值为 1,但我想知道 sigmoidal 函数的输入 x 是什么(必须是某个较高的数字,因为这里 sigm(x) 为 1)。

下列的因陀罗为你 https://stackoverflow.com/a/41712013/1922302我设法检索 Keras 层的输出和权重:

outputs = [layer.output for layer in model.layers[-2:]]
functors = [K.function( [model.input]+[K.learning_phase()], [out] ) for out in outputs]

test_input = np.array(...)
layer_outs = [func([test_input, 0.]) for func in functors]

print layer_outs[-1][0]  # -> array([[ 1.]])

dense_0_out = layer_outs[-2][0]                           # shape (612, 1)
dense_1_weights = model.layers[-1].weights[0].get_value() # shape (1, 612)
dense_1_bias = model.layers[-1].weights[1].get_value()

x = np.dot(dense_0_out, dense_1_weights) + dense_1_bias
print x # -> -11.7

x怎么可能是负数呢?在这种情况下,最后一层的输出应该是更接近 0.0 而非 1.0 的数字。是dense_0_out or dense_1_weights输出或权重错误?


既然你正在使用get_value(),我假设您使用的是 Theano 后端。要获取 sigmoid 激活之前节点的值,您可以遍历计算图 http://deeplearning.net/software/theano/extending/graphstructures.html#traversing-the-graph.

可以使用所有者字段从输出(某些计算的结果)开始遍历该图直至其输入。

在你的情况下,你想要的是输入xsigmoid 激活操作的sigmoid 运算的输出是model.output。将这些放在一起,变量x is model.output.owner.inputs[0].

如果你打印出这个值,你会看到Elemwise{add,no_inplace}.0,这是一个逐元素加法运算。可以从以下方面验证源代码 https://github.com/fchollet/keras/blob/master/keras/layers/core.py#L840-L846 of Dense.call():

def call(self, inputs):
    output = K.dot(inputs, self.kernel)
    if self.use_bias:
        output = K.bias_add(output, self.bias)
    if self.activation is not None:
        output = self.activation(output)
    return output

激活函数的输入是输出K.bias_add().

通过对代码进行少量修改,您可以在激活之前获取节点的值:

x = model.output.owner.inputs[0]
func = K.function([model.input] + [K.learning_phase()], [x])
print func([test_input, 0.])

对于使用 TensorFlow 后端的任何人:使用x = model.output.op.inputs[0]反而。

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

Keras 在激活函数之前检索节点的值 的相关文章

  • Celery计划任务中的打印语句不会出现在终端中

    当我跑步时celery A tasks2 celery worker B我想看到每秒打印 芹菜任务 目前没有打印任何内容 为什么这不起作用 from app import app from celery import Celery from
  • 带括号的上下文管理器

    我试图了解新的新内容带括号的上下文管理器Python 3 10 中的功能 新功能中的顶部项目here https docs python org 3 10 whatsnew 3 10 html 我的测试示例是尝试编写 with open f
  • 静态文件配置不正确

    我已经在 Heroku 上部署了简单的博客应用程序 它运行在Django 1 8 4 我在静态文件方面遇到了一些问题 当打开我的应用程序时 我看到Application Error页面 所以我尝试调试它并发现当我提交到 Heroku 时它无
  • Pip install 导致此错误“ cl.exe' failed with exit code 2 ”

    我已经阅读了有关此错误的所有其他问题 但令人沮丧的是 没有一个给出有效的解决方案 如果我跑pip install sentencepiece在命令行中 它给出了以下输出 src sentencepiece sentencepiece wra
  • 将打开关闭的 Google Chrome 浏览器添加到 Selenium linkedin_scraper 代码中

    我正在尝试抓取一些知名人士的 LinkedIn 个人资料 该代码获取一堆 LinkedIn 个人资料 URL 然后使用Selenium and scrape linkedin收集信息并将其作为 json 文件保存到文件夹中 我遇到的问题是
  • 如何在 Django 管理中以表格格式显示添加模型?

    我刚刚开始使用 Django 编写我的第一个应用程序 为我的家庭设计的家务图表管理器 在本教程中 它向您展示了如何添加相关对象 http docs djangoproject com en dev intro tutorial02 cust
  • 创建圆形图像 PIL Tkinter

    Currently I have a zoom feature in my application that works very well however I d like the actual zoom box to be a circ
  • 通过鼻子测试检查某个函数是否发出警告

    我正在使用编写单元测试nose http somethingaboutorange com mrl projects nose 0 11 2 我想检查函数是否引发警告 该函数使用warnings warn 这是很容易就能做到的事情吗 def
  • Python 使用 M2Crypto 通过 S/MIME 对消息进行签名

    我现在花了几个小时 但找不到我的错误 我想要一个简单的例程来创建 S MIME 签名消息 稍后可以与 smtplib 一起使用 这是我到目前为止所拥有的 usr bin python2 7 coding utf 8 from future
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 绘制“plot”而不是“scatter”时,图例选择会中断

    再会 这个问题是后续问题为什么图例选取仅适用于 ax twinx 而不适用于 ax https stackoverflow com q 60167378 9282844 下面提供的最小代码分别绘制了两条曲线ax1 and ax2 ax1 t
  • 向 Python 2.6 添加 SSL 支持

    我尝试使用sslPython 2 6 中的模块 但我被告知它不可用 安装OpenSSL后 我重新编译2 6 但问题仍然存在 有什么建议么 您安装了 OpenSSL 开发库吗 我必须安装openssl devel例如 在 CentOS 上 在
  • 如何使用 jira-python 设置 fixVersions 字段

    我正在尝试使用 jira python 模块 http jira python readthedocs org en latest 更新现有的 JIRA 具体来说 我正在尝试设置问题的fixesVersion 列表 我已经尝试了一段时间但没
  • 管理文件字段当前 url 不正确

    在 Django 管理中 只要有 FileField 编辑页面上就会有一个 当前 框 其中包含指向当前文件的超链接 但是 此链接会附加到当前页面 url 因此会导致 404 因为不存在这样的页面 例如 http 127 0 0 1 8000
  • 如何从数据框的单元格中获取值?

    我构建了一个条件 从我的数据框中提取一行 d2 df df l ext l ext df item item df wn wn df wd 1 现在我想从特定列中获取一个值 val d2 col name 但结果 我得到一个包含一行和一列
  • 如何在matplotlib中基于x轴更改直方图颜色

    我有根据 pandas 数据框计算出的直方图 我想根据 x 轴值更改颜色 例如 If the value is 0 the color should be green If the value is gt 0 the color shoul
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • 如何让你的精灵在pygame中跳跃

    目前我已经制作了一个平台游戏 可以左右移动我的角色 他从地上开始 关于如何让他跳的任何想法 因为我不明白 目前 如果我按住向上键 我的玩家精灵将连续向上移动 或者如果我按下它 我的玩家精灵将向上移动并保持向上 我想找个办法远离他 让我重新跌
  • 如何在 Caffe 的网络中出现多次损失?

    如果我在网络中定义多个损失层 从这些末端到网络的开头是否会发生多个反向传播 我的意思是 他们真的是这样工作的吗 假设我有这样的事情 Layer1 Layer2 Layer n Layer cls1 bottom layer n top cl
  • python中匹配3个或更多相同的字符

    我正在尝试使用正则表达式在字符串中查找三个或更多相同的字符 例如 你好 不匹配 噢 会的 我尝试过做类似的事情 re compile 1 3 a zA Z re compile w 1 5 但似乎都不起作用 w 1 2 是您正在寻找的正则表

随机推荐

  • 我可以在 OS X 中进行 Java 6 开发吗?

    我知道当 Leopard 推出时 每个人 嗯 每个 Java 开发人员并且足够关心在 Mac 上进行开发 都对没有 Java 6 SDK 支持感到愤怒 我知道有人在 Leopard 发布几个月后提供了某种破解方法 但我可以发誓 我稍后读到
  • 从我的数据框中创建虚拟变量矩阵;使用“NA”来查找缺失值

    我有一个基于不同年份的数据 重复了几次 我希望我的输出具有等于年数的列 每列代表一年 现在 目的是分别为每年创建虚拟变量 例如 只要主数据中存在与 2000 年平行的非 NA 观测值 2000 年的输出列就必须具有值 1 否则为 0 而且
  • 从 Firebase 通知恢复应用程序不起作用(Xamarin Forms)

    我正在努力整合Firebase 推送通知到我的应用程序 请找到我的火力基地Firebase消息服务 class 如果应用程序打开并运行 则一切正常 但是 如果应用程序未打开 如果我切换到其他应用程序 我的应用程序未关闭 我收到通知 但当我点
  • 帮助在 Rails 中构建模型

    class Profile has many projects through gt teamss has many teams foreign key gt member id has many own projects class na
  • Jenkins:动态作业创建引发“管道 CPS 方法不匹配”错误

    我正在尝试从应并行运行的管道作业之一创建多个动态作业 我希望我的詹金斯管道脚本根据用户输入下载并安装我的软件二进制文件 以下是我的示例阶段 第 1 阶段 将下载构建版本 第 2 阶段 获取参数并安装软件的 云 部分 第 3 阶段 将接受用户
  • Mongoose populate() 返回空数组

    所以我已经花了大约4个小时 阅读了几次文档 但仍然无法找出我的问题 我正在尝试对我的模型执行一个简单的 populate 我有一个用户模型和商店模型 用户有一个 favoriteStores 数组 其中包含商店的 id 我正在寻找的是这个数
  • SQL查询where参数为null不为null

    我正在尝试执行 SQL 查询并根据参数是否为空或否动态构建 where 条件 我有这样的事情 SELECT tblOrder ProdOrder tblOrder Customer FROM tblOrder CASE WHEN Order
  • 找不到模块“内部/错误”离子

    我正在尝试创建新的离子项目 然后它显示以下错误 我已经删除了nodejs npm ionic并再次重新安装 但再次出现相同的错误 Terminal https i stack imgur com vLP7J png Error Error
  • 使用 Ajax 加载用户控件

    我试图找到使用 Ajax 加载用户控件的最佳实践 我的第一种方法是简单地使用 UpdatePanel 并在 ajax 回发上使用 LoadControl 弹出它 但这会在同一 UpdatePanel 中重新呈现其他加载的用户控件 另外 我无
  • cassandra 节点限制

    我正在寻找 cassandra 是否有节点硬件规格的限制 例如如果存在任何此类限制 每个节点的最大存储可能是多少 我打算使用几个节点 每个节点具有 48TB 存储 2TB X 24 硬盘驱动器 7200rpm 并配有一些良好的双 Xeon
  • SMTP 验证错误“发送邮件失败”

    如果满足某些条件 我将尝试从我的 ASP NET 网页发送电子邮件 这是我的代码 SmtpClient smtpClient new SmtpClient NetworkCredential basicCredential new Netw
  • 如何找到 Homebrew 的可安装软件包列表?

    最近我安装了Brew https brew sh 如何检索要安装的可用brew 软件包的列表 brew help将显示可用命令的列表 brew list将显示已安装软件包的列表 您还可以附加公式 例如brew list postgres会告
  • 当请求为 POST 时,在 Apigee HTTPTargetConnection 上调用 GET

    我需要调用使用 GET 的旧版 API 我的 API 代理使用 POST 我尝试使用AssignMessage
  • 将一个字符串更改为另一个字符串的简单突变数量?

    我相信你们都听说过 文字游戏 在这种游戏中 您试图通过一次更改一个字母来将一个单词更改为另一个单词 并且只浏览有效的英语单词 我正在尝试实现一个 A 算法来解决它 只是为了充实我对 A 的理解 并且需要的东西之一是最小距离启发式 也就是说
  • Angular 单元测试 Jasmine Spy 错误

    以下控制器收到类型错误 未定义 不是函数 正在评估sessionService getCurrentPlace 我有一个模拟服务 该方法正在被监视 模拟服务上的另一种方法工作正常 我试过了 AndReturns 关于间谍以及 AndCall
  • 在 MATLAB 中为结构体数组的字段赋值

    我想替换结构体数组中字段的值 例如 我想在以下结构中将所有 1 替换为 3 a 1 b 1 a 2 b 2 a 3 b 1 a a b 1 b 3 This doesn t work and spits out Insufficient o
  • 是否有一个“空”printf 代码不打印任何内容,用于跳过参数?

    如果我想要一个程序有多种文本输出格式 我可以这样做 const char fmtDefault u x s 2f each n const char fmtMultiLine Qty 3u nItem s nPrice per item 2
  • Kartik Select2 - 以编程方式更改多个

    我有一个 yii2 activeform 其中表单的功能可以根据表单中的其他内容进行更改 所以 我有一个俱乐部字段 在某些情况下可以是多个 但在其他情况下不能是多个
  • 零/符号扩展是无操作的,为什么要为每种大小类型提供指令呢?

    对于 x86 和 x64 编译器生成类似的零 符号扩展 MOVSX 和 MOVZX 扩展本身并不是免费的 但允许处理器执行无序魔法加速 但在 RISC V 上 因此 无符号和有符号 32 位整数之间的转换是无操作 从有符号 32 位整数到有
  • Keras 在激活函数之前检索节点的值

    想象一个完全连接的神经网络 其最后两层具有以下结构 Dense units 612 activation softplus Dense units 1 activation sigmoid 网络的输出值为 1 但我想知道 sigmoidal