如标题中所述,我想在tensorflow中使用现有的ops和tensor操作实现自定义层。我想知道我是否可以像在theano中可以做的那样在python中完成它。在该层中,输入可以是一些矩阵,批量输入和一些权重和偏差需要被学习。在一些张量操作之后,输出将被馈送到下一层。这层中的计算可能很复杂,所以我想知道tensorflow是否可以为我做自动差异。
答案 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, ...)
等等。只要您只是编写具有渐变的操作,自动区分就会起作用。