python - 在张量流中做逆矩阵的优雅方法
问题描述
我想在tensorflow 2中使用cholesky分解来反转列表中的一堆张量,但生成的代码非常难看。有没有优雅/更pythonic的方式来做这样的事情:
iMps = []
for Mp in Mps :
cholMp = tf.linalg.cholesky(Mp)
icholMp = tf.linalg.inv(cholMp)
iMp = tf.tensordot(tf.transpose(icholMp),icholMp)
iMps.append(iMp)
是否可以用其他东西替换 for 循环?, Mps 是不同大小的张量列表(我可以将它表示为其他东西吗?)。有没有办法让它更优雅?
解决方案
您可以使用 python Map 函数来实现这一点。
我已修改您的代码以创建如下所示的 Map 函数。
def inverse_tensors(Mp):
cholMp = tf.linalg.cholesky(Mp)
icholMp = tf.linalg.inv(cholMp)
iMp = tf.tensordot(tf.transpose(icholMp),icholMp,axes=0)
return iMp
iMps = list(map(inverse_tensors,list_tensors))
希望这能回答你的问题,快乐学习!
推荐阅读
- reactjs - 如何使用 create-react-app 从服务人员中排除一些 url?
- spring-boot - 您是否应该在不同域的服务层中访问另一个域的存储库层?
- sql-server - SQL 条件聚合随时间变化
- c - lex/flex 是如何压缩其 DFA 表的?
- javascript - 如何在jquery的按钮值中添加空格
- c# - 可以知道 PC 是否有来自 NET CORE 2.1 的最新 Windows 更新
- java - 最大堆大小无效,但在给定 PermSize 时有效
- vba - 为什么我的 vba 脚本在逐行执行(在调试中)时有效,但在运行时无效?
- javascript - JS/TS 最聪明的方式如何遍历对象数组并进行一些更改
- php - 我正在使用数组在数据库(MS Access)中搜索值,但它不起作用