如何在Keras中使用tensorflow.python.ops?

时间:2018-12-02 15:13:05

标签: python tensorflow machine-learning keras

我正在为Keras中的自定义优化程序设计SVD(具体来说,我想将the Shampoo optimizer移植到Keras。

在Tensorflow中,我将使用tensorflow.python.ops.linalg_ops.svd(),但是在keras.backend中没有类似的功能。

可以在纯Keras设置中执行SVD,还是可以某种方式直接使用Tensorflow函数(如果可以,如何使用)?

编辑:仅供将来参考,实际上存在一个包装器功能,可以在Keras中直接使用本机tf优化器:

import keras as ks
from tensorflow.contrib.opt import AdamWOptimizer

tfopt = AdamWOptimizer()
ksopt = ks.optimizers.TFOptimizer(tfopt)

但是,不幸的是,它似乎不适用于Shampoo优化器。

1 个答案:

答案 0 :(得分:1)

如果您将keras与tensorflow后端一起使用,则比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)
...