如何为单输入和多输出训练回归模型?

时间:2019-09-21 06:00:06

标签: python tensorflow machine-learning linear-regression

我已经训练了一个回归模型,该模型可以近似计算方程的权重: Y = R + B + G 为此,我提供了R,B,G和Y的预定值作为训练数据,并且在训练了模型之后,该模型能够针对给定的R,B和G值成功地预测Y的值。具有3个输入的神经网络,具有2个神经元的1个密集层(隐藏层)和具有单个神经元的输出层(输出)。

    hidden = tf.keras.layers.Dense(units=2, input_shape=[3])
    output = tf.keras.layers.Dense(units=1)

但是,我需要实现相反的功能。即,我需要训练一个模型,该模型采用Y值并预测与该Y值相对应的R,B和G值。 我刚刚了解到,回归完全是关于单个输出的。因此,我无法想到解决方案及其实现之路。 请帮助。
(PS是否可以使用我已经训练的模型来执行此操作?我的意思是,一旦确定了R,B和G的权重,是否有可能操纵该模型以使用这些权重来映射Y到R,B和G?)

1 个答案:

答案 0 :(得分:1)

这是一个使用张量流中的神经网络开始解决问题的示例。

import numpy as np
from tensorflow.python.keras.layers import Input, Dense
from tensorflow.python.keras.models import Model

X=np.random.random(size=(100,1))
y=np.random.randint(0,100,size=(100,3)).astype(float)   #Regression

input1 = Input(shape=(1,))
l1 = Dense(10, activation='relu')(input1)
l2 = Dense(50, activation='relu')(l1)
l3 = Dense(50, activation='relu')(l2)
out = Dense(3)(l3)

model = Model(inputs=input1, outputs=[out])
model.compile(
    optimizer='adam',
    loss=['mean_squared_error']
    )

history = model.fit(X, [y], epochs=10, batch_size=64)