2016-10-29 51 views
6

Birden fazla girişe sahip bir TensorFlow grafiği tanımlamak mümkün mü? Örneğin, grafiğe iki resim ve bir metin vermek istiyorum, her biri sonunda bir fc katmanına sahip bir grup katman tarafından işleniyor. Daha sonra, üç temsili dikkate alan kayıplı bir işlevi hesaplayan bir düğüm vardır. Amaç, üç ağın ortak temsiliyet kaybını göz önüne alarak geri yayılmasına izin vermektir. Mümkün mü? Bu konuda herhangi bir örnek/öğretici? şimdiden teşekkürler!Tensör akışıyla çoklu giriş grafiği nasıl oluşturulur?

cevap

9

Bu tamamen düz bir şeydir. "Bir giriş" için gibi bir şey olurdu:

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(x, w) + b) 

input1 = tf.placeholder(tf.float32, [None, 2]) 
output1 = build_column(input1, 2) # 2-20-3 network 

ve sadece daha böyle "Sütun" eklemek ve

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 

istediğiniz an onları birleştirmek ve benziyor ağı alacak edebilirsiniz:

2-20-3\ 
     \ 
10-20-3--SUM (dimension-wise) 
     /
5-20-3/ 

ya da tek değerli çıkış yapmak için

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) 
Bu 2 yıl önce olmasına rağmen 210

Ben nn çalışması ile ilgili bir sorum var,

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

olsun. Birden fazla giriş varsa nn'yi çalıştırmak için nasıl girerdiniz? Sırasıyla ilgili girişleri ile basit bir session.run (optimizer, {input1: getBatch1, input2: getBatch2, input3: getBatch3} mi? Optimizer eğitildiğinde, TF otomatik olarak farklı girişlerin girişlerine beslenir. nn? Teşekkürler! – Luna

+0

@Luna bir sorunuz varsa - bir cevaba yorum göndermekten ziyade bir soru sorun. – lejlot