2017-11-18 21 views
1

私は入力データに48または52(この数は4の倍数)と3つの出力を含んでいます。 入力は以下のようになります。 1.34772 1.35783 1.35937 1.35158 1.33009 出力-1,108,128 最初の出力は常に-1または1で、2番目の出力は80,140の間の第2出力です。 私は、この入力と出力に従って、すべての重み、偏りを計算するNNモデルを訓練するのが好きです。 Sample Input and output data AX、AY、AZは私の出力です。そのようなデータを3つの出力に対して同時に訓練するためにTensorflowを使用することは可能でしょうか? よろしく、多出力ニューラルネットワークTensorflow

+0

すべての出力に対して同じモデル(つまり、共有ウェイト)が必要ですか?さらに、48または52の意味は? –

+0

48入力と3出力 – user1955534

答えて

1

あなたが試みることができる最も簡単な方法は、深い学習モデルから3つの値を出力することです。私は必要に応じてコメントのサンプルコードを下に与えました。上記

import tensorflow as tf 

N_OUTPUTS = 3 
N_INPUTS = 48 
N_HIDDEN_UNITS = # Define here 
N_EPOCHS = # define here 

input = tf.placeholder(tf.float32, shape=[None, N_INPUTS], name='input') # input here 

outputs = tf.placeholder(tf.float32, shape=[None, N_OUTPUTS], name='output') # one sample is something like[Ax,Ay,Az] 

# one hidden layer with 3 outputs 
W = { 
    'hidden': tf.Variable(tf.random_normal([N_INPUTS, N_HIDDEN_UNITS])), 
    'output': tf.Variable(tf.random_normal([N_HIDDEN_UNITS, N_OUTPUTS])) 
} 
biases = { 
    'hidden': tf.Variable(tf.random_normal([N_HIDDEN_UNITS], mean=1.0)), 
    'output': tf.Variable(tf.random_normal([N_OUTPUTS]), mean=1.0) 
} 

hidden = tf.matmul(input, W['hidden']) + biases['hidden'] # hidden layer 
output_ = tf.matmul(hidden, W['output']) + biases['output'] # outputs 

cost = tf.reduce_mean(tf.square(output_ - outputs)) # calculates the cost 
optimizer = tf.train.GradientDescentOptimizer(0.001).minimize(cost) # optimazer 

with tf.Session() as session: 
    session.run(tf.global_variables_initializer()) 
    for epoch in range(N_EPOCHS): 

    # _ = session.run([optimizer],feed_dict={input: , outputs : }) should feed input and output as [Ax,Ay,Az] 

、私はちょうど1つの隠れ層とNNモデルを作成し、3つの値([AX、Ayを、AZ])を出力しています。あなたの[アックスは、Ayのは、AZ]は(すなわちは相関を持っている)相互に依存している場合

ただし、上記のモデルのような何かを試すことができます。それ以外の場合は、3つの出力に対して3つの独立したモデルを作成し、それらを別々に訓練してください。

これが役に立ちます。

関連する問題