Neural network 如何用张量流建立多输入图?

Neural network 如何用张量流建立多输入图?,neural-network,tensorflow,backpropagation,Neural Network,Tensorflow,Backpropagation,是否可以定义一个具有多个输入的TensorFlow图? 例如,我想给图形两个图像和一个文本,每一个都由一组层处理,最后是一个fc层。然后有一个节点计算一个损耗函数,该函数考虑了这三种表示形式。目的是考虑联合表示损失,使三个网络反向传播。 可能吗?有关于它的例子/教程吗?这完全是直截了当的事情。对于“一个输入”,您将有如下内容: def build_column(x, input_size): w = tf.Variable(tf.random_normal([input_size, 2

是否可以定义一个具有多个输入的TensorFlow图? 例如,我想给图形两个图像和一个文本,每一个都由一组层处理,最后是一个fc层。然后有一个节点计算一个损耗函数,该函数考虑了这三种表示形式。目的是考虑联合表示损失,使三个网络反向传播。
可能吗?有关于它的例子/教程吗?

这完全是直截了当的事情。对于“一个输入”,您将有如下内容:

def build_column(x, input_size):

    w = tf.Variable(tf.random_normal([input_size, 20]))
    b = tf.Variable(tf.random_normal([20]))
    processing1 = tf.nn.sigmoid(tf.matmul(x, w) + b)

    w = tf.Variable(tf.random_normal([20, 3]))
    b = tf.Variable(tf.random_normal([3]))
    return tf.nn.sigmoid(tf.matmul(processing1, w) + b)

input1 = tf.placeholder(tf.float32, [None, 2])
output1 = build_column(input1, 2) # 2-20-3 network
您可以简单地添加更多这样的“列”,并随时合并它们

input1 = tf.placeholder(tf.float32, [None, 2])
output1 = build_column(input1, 2)

input2 = tf.placeholder(tf.float32, [None, 10])
output2 = build_column(input1, 10)

input3 = tf.placeholder(tf.float32, [None, 5])
output3 = build_column(input1, 5)


whole_model = output1 + output2 + output3 # since they are all the same size
您将获得如下网络:

 2-20-3\
        \
10-20-3--SUM (dimension-wise)
        /
 5-20-3/
或者进行单值输出

w1 = tf.Variable(tf.random_normal([3, 1]))
w2 = tf.Variable(tf.random_normal([3, 1]))
w3 = tf.Variable(tf.random_normal([3, 1]))

whole_model = tf.matmul(output1, w1) + tf.matmul(output2, w2) + tf.matmul(output3, w3)
得到

 2-20-3\
        \
10-20-3--1---
        /
 5-20-3/

谢谢Lejlot!还有一个问题:上面的build_column()没有被重用,对吗?如果我们想对两个图像输入使用相同的build_column()参数,然后对输出使用concat,该怎么办?