【问题标题】:Multi Output Neural Network By TensorflowTensorFlow 的多输出神经网络
【发布时间】:2017-11-20 16:11:11
【问题描述】:

我的输入数据包括 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 个输出训练此类数据? 问候,

【问题讨论】:

  • 所以你想要所有输出都使用相同的模型(即共享权重)?此外,你所说的 48 或 52 是什么意思?
  • 48 个输入和 3 个输出

标签: python machine-learning tensorflow


【解决方案1】:

您可以尝试的最简单方法是从深度学习模型中输出 3 个值。我在下面给出了必要的 cmets 示例代码。

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 个独立模型并分别训练它们。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2012-01-16
    • 1970-01-01
    • 2018-11-05
    • 2021-09-22
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多