python - 如何模拟张量流模型?
问题描述
我想测试一个接受tf.keras
模型并对其执行一些操作的函数。说明问题的示例函数:
def func(model, x):
with tf.GradientTape() as tape:
tape.watch(x)
output = model(x)
# do some additional stuff with output
gradient = np.array(tape.gradient(output, x))
# do some additional stuff with gradient
return gradient
我想知道模拟的最佳主意model
是什么。
可能的解决方案:
使用具有设定权重的小型网络。这个最容易实现,但是
a) 计算时间比简单的模拟要长。
b) 很难控制模型返回的内容。使用单元测试或
pytest
. 这将直接失败,因为没有创建可以链接x
和的计算图output
。移动
tape.gradient(output, x)
到另一个函数,然后在测试期间模拟这个函数并model(x)
使用单元测试或 pytest。我认为这是最好的,但它func
的可读性较差(尤其是如果必须将更多特定于 tf 的元素移动到各种其他功能时)。
有没有更好的办法?理想情况下,我想:
- 表示给定输入的该模型
x
返回给定输出y
。 y
表示给定输出相对于给定输入的梯度x
是z
。y
表示给定层的给定输出的梯度l
是l'
。- 尽量减少对
func
.
解决方案
推荐阅读
- android - RecyclerView 在一个项目点击时选择多个项目
- elasticsearch - 如何在 Kibana 中查看日志文件?
- php - HTML - CSS 导航栏下拉菜单
- function - 为什么我不能用两个 i32 参数调用 gen_range ?
- python-3.x - 没有找到导入的模块?
- python - 在pygame中加载大量图像的有效方法?
- javascript - 反射 JS 承诺对象以检索 then/catch 调用列表
- tmux - 在 arm64 模式下在 M1 Mac 上运行 tmux
- android - 如何在本机反应中更改视图中的文本颜色?
- javascript - 是否有编译成 python 的类型语言?