我可以在python中使用现有操作(如conv2d和ten​​sor操作)在tensorflow中编写自定义层吗?

时间:2016-04-05 13:05:14

标签: tensorflow deep-learning

如标题中所述,我想在tensorflow中使用现有的ops和tensor操作实现自定义层。我想知道我是否可以像在theano中可以做的那样在python中完成它。在该层中,输入可以是一些矩阵,批量输入和一些权重和偏差需要被学习。在一些张量操作之后,输出将被馈送到下一层。这层中的计算可能很复杂,所以我想知道tensorflow是否可以为我做自动差异。

1 个答案:

答案 0 :(得分:5)

如果您的图层是现有操作的组合,那么它肯定会起作用。这就是TF-Slim的工作方式。

# Skeleton code, just to demonstrate the concept
def conv(input, ...):
    kernel = tf.Variable(...)
    tmp = tf.nn.conv2d(input, kernel, ...)
    bias = tf.Variable(...)
    tmp = tf.nn.bias_add(tmp, bias, ...)
    return tf.nn.relu(tmp, ...)

定义了一个函数,它为您提供了一个“集成”层,它执行基本卷积层的常规步骤,然后您可以将其用作

layer_1 = conv(input, ...)
layer_2 = conv(layer_1, ...)

等等。只要您只是编写具有渐变的操作,自动区分就会起作用。