我想知道如果它只包含链式张量流操作,是否有一种简单的方法来定义用户定义的张量流操作。这只是为了使代码不必要地长,特别是如果必须对类似的对象执行相同的操作:
例如,如果我想在具有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)...
这似乎很简单,但我似乎无法找到文档。
答案 0 :(得分:0)
执行此操作的标准方法是定义构建网络的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()
来处理不同变量之间的变量的构造和共享调用函数。