Skip to main content
 首页 » 编程设计

python之我如何在 Keras 中使用 tensorflow.python.ops

2024年09月03日27luoye11

我希望在 Keras 中为自定义优化器执行 SVD(具体来说,我想将 the Shampoo optimizer 移植到 Keras。

在 Tensorflow 中,我会使用 tensorflow.python.ops.linalg_ops.svd() , 但是,keras.backend 中没有这样的函数。 .

SVD 能否在纯粹的 Keras 设置中执行,或者我能否以某种方式直接使用 Tensorflow 函数(如果可以,如何使用)?

编辑:仅供将来引用,实际上存在一个包装函数,允许在 Keras 中直接使用 native tf 优化器:

import keras as ks 
from tensorflow.contrib.opt import AdamWOptimizer 
 
tfopt = AdamWOptimizer() 
ksopt = ks.optimizers.TFOptimizer(tfopt) 

不幸的是,它似乎并不能专门与 Shampoo 优化器一起使用。

请您参考如下方法:

如果您使用带有 tensorflow 后端的 keras,那么 keras 后端是 tensorflow。
这意味着当你从keras后端调用一个方法时,它实际上调用了tensorflow的一个方法。

因此,您可以同时使用 keras 后端操作和 tensorflow,并且可以互换使用。

例如,在给定的代码中:

tensor = ... 
m = K.mean(tensor) 
... 

我可以将行 K.mean(tensor) 更改为 tf.mean(tensor)

tensor = ... 
m = tf.mean(tensor) 
... 

所以你可以像使用 tensorflow SVD 操作一样使用它,如果它是 keras 后端的函数:)

例如,如果你想拥有

tensor = ... 
res = K.some_submodule.svd(tensor) 
... 

比你能做的还要多

tensor = ... 
res = tensorflow.python.ops.linalg_ops.svd(tensor) 
...