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

Gu *_*ang 3 deep-learning tensorflow

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

eta*_*ion 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, ...)
Run Code Online (Sandbox Code Playgroud)

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

layer_1 = conv(input, ...)
layer_2 = conv(layer_1, ...)
Run Code Online (Sandbox Code Playgroud)

等等.只要您只是编写具有渐变的操作,自动区分就可以了.