Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Keras中使用tensorflow.python.ops?_Python_Tensorflow_Machine Learning_Keras - Fatal编程技术网

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

如何在Keras中使用tensorflow.python.ops?,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我希望为Keras中的定制优化器进行SVD(特别是,我想将其移植到Keras) 在Tensorflow中,我将使用Tensorflow.python.ops.linalg_ops.svd(),但是,keras.backend中没有类似的函数 SVD是否可以在纯粹的Keras设置中执行,或者我是否可以直接使用Tensorflow函数(如果可以,如何使用) 编辑:仅供将来参考,实际上存在一个包装函数,允许在Keras中直接使用本机tf优化器: import keras as ks from tens

我希望为Keras中的定制优化器进行SVD(特别是,我想将其移植到Keras)

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

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

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

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

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

但不幸的是,它似乎并不特别适用于洗发水优化器。

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

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

例如,在给定代码中:

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

因此,您可以使用tensorflow SVD操作,就像使用keras后端的函数一样:)

例如,如果你想

tensor = ...
res = K.some_submodule.svd(tensor)
...
而不是你能做的

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

嗯,我认为在
tensorflow
keras.backend
之间没有一对一的对应关系。例如,我可以从tensorflow.python.ops import array_ops执行以下导入
,但不能从keras.backend.python.ops import array_ops
执行以下导入操作。为什么?这是一个很好的观点,我明白我必须澄清我自己。我并没有试图声称keras拥有tensorflow所拥有的所有功能,或者keras.backend完全等同于使用tensorflow。我想说的是,当你在tensorflow上面使用keras时,是使用tensorflow中实现的方法。这意味着keras使用的对象可以是tensorflow direct方法也可以使用的对象。因此,您可以将直接tensorflow方法与keras.backed方法混合使用。您同意上述说法吗?或者你还看到它有什么问题吗?:)我仍然有点不确定纯TF和Keras是否总是混合在一起。我能想到的最显著的例子是TF张量和Keras张量不是一回事(Keras张量携带着它的历史)。但这也许只是构造图时的一个问题?总之,我实际上要做的是实现一个特定的优化器(继承自Keras优化器类),它需要SVD。如果使用纯的
keras.backend
无法实现这一点,这是否意味着我不能用keras编写优化器,使其与任何后端本机兼容?另一个优点。我所能说的是,我已经编写了包含tensorflow方法的函数,并将它们与用keras编写的管道集成。例如,我制作了一个包含tensorflow方法的自定义损失函数。我的观点是,如果你使用tensorflow方法,它应该是有效的,但我没有进一步的方法来证明它。你知道如何在Keras中使用洗发水优化器吗?
tensor = ...
res = tensorflow.python.ops.linalg_ops.svd(tensor)
...