Python 在keras中使用自定义tensorflow操作
我有一个包含自定义tensorflow操作的tensorflow脚本。我想将代码移植到keras,但我不确定如何在keras代码中调用自定义ops 我想在keras中使用tensorflow,所以到目前为止我找到的教程描述了与我想要的相反的内容: 我还读过关于Lambda层的文章,它可以封装任意自定义函数,但我没有看到tf.ops的示例 如果您能为代码片段提供一个最简单的示例,我将不胜感激。例如,假设tf.ops为:Python 在keras中使用自定义tensorflow操作,python,tensorflow,keras,Python,Tensorflow,Keras,我有一个包含自定义tensorflow操作的tensorflow脚本。我想将代码移植到keras,但我不确定如何在keras代码中调用自定义ops 我想在keras中使用tensorflow,所以到目前为止我找到的教程描述了与我想要的相反的内容: 我还读过关于Lambda层的文章,它可以封装任意自定义函数,但我没有看到tf.ops的示例 如果您能为代码片段提供一个最简单的示例,我将不胜感激。例如,假设tf.ops为: outC = my_custom_op(inA, inB) ---编辑: 类
outC = my_custom_op(inA, inB)
---编辑:
类似的问题已经在中描述过——基本上是在keras中调用自定义op,但是我无法掌握如何将其应用到我想要的另一个示例上的解决方案,例如一个。这个定制的tf op首先被编译(用于gpu),然后在tensorflow中使用,如第40行所示。我很清楚如何使用lambda层中包装的自定义(lambda)函数,如果我使用keras,我想了解的是如何使用编译的自定义ops。您可以在keras
lambda层中包装任意tensorflow函数,并将它们添加到您的模型中。最简单的工作示例:
你是说一个自定义层吗?为了在Keras中使用TensorFlow,你可以从Keras导入后端执行作为K
,其中K
对应于TensrFlow。例如K.nn.relu
相当于tf.nn.relu
etc@Colonder,谢谢你的帮助。请阅读更新的描述。我不确定这个预编译的自定义op是否可以/应该制作成自定义层。如果是,这是我想在一个简单的例子中理解的概念,我在上面提供了示例性github回购协议。我认为最好坚持Keras的思想,从Keras导入后端作为K
而不是从Keras导入tensorflow作为tf所有tensorflow函数在Keras后端都可用吗K.matmul
给了我一个错误。是的,它们是,但它们的名称不同tf.matmul
相当于K.dot
,但是是的,归根结底这并不重要,所有的tensorflow函数在keras后端都不可用。而且很多都改变了,使用不同的输入,功能有限。我尝试了一段时间只使用K函数,但那实在太有限了使用tf
而不是K
的唯一问题是无法将代码迁移到其他后端。
import tensorflow as tf
from keras.layers import Dense, Lambda, Input
from keras.models import Model
W = tf.random_normal(shape=(128,20))
b = tf.random_normal(shape=(20,))
inp = Input(shape=(10,))
x = Dense(128)(inp)
# Custom linear transformation
y = Lambda(lambda x: tf.matmul(x, W) + b, name='custom_layer')(x)
model = Model(inp, y)