我想知道是否有一种简单的方法来定义用户定义的张量流操作,如果它只包含链式的张量流操作。这只是为了使代码不显得过长,尤其是在必须对类似对象执行相同操作的情况下:
例如,如果我想在具有 2 个隐藏层的神经网络上定义一个前馈机制,我需要这样做:
layer1_output = tf.nn.relu(tf.nn.matmul(input,weights1) + biases1)
layer2_output = tf.nn.relu(tf.nn.matmul(layer1_output,weights2) + biases2)
layer3_output = tf.nn.softmax(tf.nn.matmul(layer2_output,weights3) + biases2)
但是,这通常也需要为验证和测试集完成,因此我想定义一个函数,该函数可以让我一次性完成所有操作,以便我可以得到这样的东西:
train_output = feed_forward(input_train)
test_output = feed_forward(input_test)...
这似乎很简单,但我似乎找不到文档。
执行此操作的标准方法只是定义一个构建网络的 Python 函数:
def feed_forward(input_data):
layer1_output = tf.nn.relu(tf.nn.matmul(input_data, weights1) + biases1)
layer2_output = tf.nn.relu(tf.nn.matmul(layer1_output, weights2) + biases2)
layer3_output = tf.nn.softmax(tf.nn.matmul(layer2_output, weights3) + biases2)
return layer3_output
根据定义weights
和biases
变量的方式,可以将它们作为参数传递给函数,或者使用 tf.get_variable()
来处理函数的不同调用之间的变量构造和共享。