Tensorflow:计算关于高阶张量的 Hessian 矩阵(仅对角部分)

2024-03-22

我想计算我指定的损失相对于 vgg16 conv4_3 层内核(3x3x512x512 维矩阵)的每个特征图的一阶和二阶导数(Hessian 的对角部分)。如果根据以下公式尊重低阶导数,我知道如何计算导数如何在Tensorflow中计算所有二阶导数(仅Hessian矩阵的对角线)? https://stackoverflow.com/questions/38200982/how-to-compute-all-second-derivatives-only-the-diagonal-of-the-hessian-matrix然而,当涉及到更高级别时,我彻底迷失了。

# Inspecting variables under Ipython notebook
In  : Loss 
Out : <tf.Tensor 'local/total_losses:0' shape=() dtype=float32>

In  : conv4_3_kernel.get_shape() 
Out : TensorShape([Dimension(3), Dimension(3), Dimension(512), Dimension(512)])

## Compute derivatives
Grad = tf.compute_gradients(Loss, conv4_3_kernel)
Hessian = tf.compute_gradients(Grad, conv4_3_kernel)

In  : Grad 
Out : [<tf.Tensor 'gradients/vgg/conv4_3/Conv2D_grad/Conv2DBackpropFilter:0' shape=(3, 3, 512, 512) dtype=float32>]

In  : Hessian 
Out : [<tf.Tensor 'gradients_2/vgg/conv4_3/Conv2D_grad/Conv2DBackpropFilter:0' shape=(3, 3, 512, 512) dtype=float32>]

请帮我检查一下我的理解。因此对于conv4_3_kernel,每个dim代表[Kx, Ky, in_channels, out_channels],所以Grad应该是偏导数Loss关于每个特征图中的每个元素(像素)。和Hessian是二阶导数。

But, Hessian计算所有导数,我怎样才能只计算对角线部分?我应该使用tf.diag_part()?提前谢谢了!


tf.compute_gradients计算标量的导数。如果提供的数量不是标量,它会通过对示例中发生的情况求和分量将其转换为标量

要计算完整的 Hessian 矩阵,您需要n打电话给tf.gradients, 例子是here https://groups.google.com/a/tensorflow.org/d/msg/discuss/Xb_lwMIsNPc/sLk7aNcZCQAJ。如果您只想要对角线部分,则将参数修改为i打电话给tf.gradients区分关于i第一个变量,而不是所有变量。

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

Tensorflow:计算关于高阶张量的 Hessian 矩阵(仅对角部分) 的相关文章

随机推荐

  • Python 模块类型输入

    我正在使用动态加载Python模块importlib import module如下 def load module mod name str gt return importlib import module mod name 有人可以告
  • 比较 MAC OSX 中 Bash 中的两个日期

    我是 Bash 新手 提前道歉 Set up 我有一个特定的结束日期end这取决于特定的开始日期s和周期长度p这样 end s p Problem 当且仅当今天的日期早于或等于结束日期时 我想执行命令 即 执行命令iffdate end C
  • 将自定义字符串转换为日期时间格式

    我有一个日期时间数据字符串列表 如下所示 list 2016 08 02T09 20 32 456Z 2016 07 03T09 22 35 129Z 我想将其转换为示例格式 对于第一项 8 2 2016 9 20 32 AM 我试过这个
  • 以编程方式格式化谷歌图表

    使用以下代码如何设置格式以便CurrencyValue1和CurrencyValue2在图表中显示为美元 作为货币值 function drawChart var data new google visualization DataTabl
  • 在 PictureBox 上绘制折线

    我想在以下位置绘制折线 由一条或多条线段组成的连续线 PictureBox 在这里 我们可以通过指定每个线段的端点来创建多条线 并计算每个线段的距离 即每条线的距离 如果您想在图片框上执行此操作 最简单的方法是从PictureBox并提供当
  • 以编程方式从我的 java webapp 读取静态资源 [重复]

    这个问题在这里已经有答案了 目前 我的 war 文件中有一堆图像 如下所示 WAR ROOT WEB INF IMAGES image1 jpg image2 jpg index html 当我通过 servlet jsp etc 生成 h
  • Firebase-perf 与 let 插件冲突

    最近 我们被要求在 Android 应用程序上实现 Firebase 性能监控 但它给我们带来了许多不同的问题 该应用程序曾经工作得很好 但是在添加 firebase perf 后 它可以编译 但在运行时我们发现让插件 https gith
  • 在 Javascript/jQuery 中解码 base64 文件以供下载

    今天我一直在尝试 SQL 二进制对象 我首先将图像存储在表中 发出 AJAX 请求以对图像进行 Base64 编码 然后使用 来显示它 img src 图像显示良好 我正在从事的网络项目也需要文件下载 主要是 PDF 太棒了 我想 我也将
  • 无法创建新的雅虎应用程序

    这个链接过去一直很挑剔 现在似乎完全失效了 https developer yahoo com apps create https developer yahoo com apps create 是不是不能再创建 Yahoo 应用程序了 N
  • PHPhotoLibrary.requestAuthorization() 在 iOS 9 上不触发授权提示

    我有以下功能 显示带有两个不同选项的操作表 目前 唯一实施的选项是标题为 照片 的选项 正确呈现操作表并调用正确的操作 我的问题是 在模拟器和实际设备上 我无法显示请求访问照片库的提示 PHPhotoLibrary authorizatio
  • 由于行高与垂直对齐冲突,文本被截断:顶部

    我有一个表格 其中包含一个表格内格式类似于文本的提交按钮 一般情况下 所有表行都设置为vertical align top 如果我不对格式化文本应用行高 则其底部部分将被切断 如以下字母所示p q等等 小提琴的底部 如果我确实将其应用行高
  • Xcode 12 - 下载更多模拟器运行时为空

    I can t add more simulator OS version in XCode 12 for example iOS 13 the list is empty 如何添加更多不同ios版本的模拟器 我遇到了完全相同的问题 苹果返
  • 以 cweb 或 noweb 样式导出代码块名称?

    在 Org 模式下编写 Lite 程序时 导出类似于在早期的 Lite 编程工具 例如 cweb 或 noweb 中编织 这些工具会将代码块名称添加到编织 导出 输出中 在组织模式下 它看起来像这样 组织文件 NAME mycodebloc
  • Firestore.firestore() 失败并显示“类型‘Firestore’没有成员‘firestore’”

    我正在尝试为我的 Firestore 设置数据库 但是我尝试重新安装 Pod 和许多其他东西 但我仍然无法让它工作 因为它显示了以下错误 Type Firestore has no member firebase 我不知道为什么会这样 因为
  • Javascript 保持 div 隐藏,直到您单击按钮,需要帮助修改

    基本上 我的代码现在隐藏了我网站上的一些 div 然后当您单击链接时 它会使 div 出现 我需要帮助 以便当我单击一个链接时出现一个 div 然后单击另一个链接时 前一个链接会消失 假设我点击 关于 链接 div 出现了 很好 然后我点击
  • 汇编中的蛇,使用什么数据结构?

    我对汇编完全陌生 不管你信不信 我们的第一个任务是在汇编中创建蛇 我应该如何储存蛇 我应该把它放在堆栈中 还是应该将它放入某个寄存器中 我已经对这种 可怕的 语言进行了大约 3 天的研究 但无法找到一个好的开始方法 我可能会在 c 中使用某
  • 如何用Java读取.EXE文件的内容

    在 Java 中读取可执行文件有哪些可能的选项和最合适的选项 我想生成 exe 文件的十六进制表示形式 我正在考虑以二进制方式读取文件 然后进行转换 但是我怎样才能读取 exe呢 1 以字节形式读取文件 使用 BufferedInputSt
  • 在单个 RecyclerView 中使用来自 Firestore 和 Firebase RTDB 的数据

    我有一个 RecyclerView 它由存储在 Firestore 数据库中的帖子填充 每个帖子都被编写为具有唯一 postID 的文档 存储发布的消息 时间戳和点赞计数器 mUploads is defined as private Li
  • 如何解析 C# 的命令行输出?

    我想从 C 执行一个应用程序 命令行应用程序 并且我想在执行该应用程序并向其提供输入后 我想解析将产生它的输出 因为 它会输出很多东西 而我想从中获取我需要的东西 我怎样才能做到这一点 我怎样才能得到c 中的输出 然后只从中获取我需要的东西
  • Tensorflow:计算关于高阶张量的 Hessian 矩阵(仅对角部分)

    我想计算我指定的损失相对于 vgg16 conv4 3 层内核 3x3x512x512 维矩阵 的每个特征图的一阶和二阶导数 Hessian 的对角部分 如果根据以下公式尊重低阶导数 我知道如何计算导数如何在Tensorflow中计算所有二