Tensorflow的多输出神经网络

时间:2017-11-18 19:37:10

标签: python machine-learning tensorflow

我的输入数据包括48或52(此数字是4的倍数)和3个输出。 对于输入类似如下: 1.34772 1.35783 1.35937 1.35158 1.33009 并输出-1,108,128 第一个输出始终为-1或1,第二个,第三个输出整数在80,140之间。 我喜欢训练NN模型,根据此输入和输出计算所有权重,偏差....... Sample Input and output data AX,AY和AZ是我的输出。是否可以使用Tensorflow同时为3个输出训练此类数据? 的问候,

1 个答案:

答案 0 :(得分: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]

上面,我创建了一个只有一个隐藏层的NN模型,然后输出3个值( [Ax,Ay,Az] )。

但是,如果您的 [Ax,Ay,Az] 是相互依赖的(具有相关性),您可以尝试类似上述模型的内容。否则,只需为三个输出构建3个独立模型并单独训练它们。

希望这有帮助。