18维输入(x1,x2....x18)9维输出(y11,y12,y13,y21,y22.y23,y31,y32,y33)做回归,用sklearn库,如何在算法中约束输出?比如:y11+y12+y13=1 y21+y22+y23=1 y31+y32+y33=1
1个回答
你的输出中线性相关性,所以可把已知相关的y给去掉。
去掉之后你的回归是:
18维输入(x1,x2....x18)6维输出(y12,y13,y22.y23,y32,y33)
然后再根据已知限制条件计算得到
y11 = 1 - y12 - y13
y21 = 1 - y22 - y23
y31 = 1 - y32 - y33
SofaSofa数据科学社区DS面试题库 DS面经
这是我的单输入两输出模型,输入:5维 输出----fc_a:3维(要求:3个维度输出之和为1)、fc_b:2维 .
。。。
x = tf.keras.layers.Dense(64)(inputs)
x = tf.keras.layers.Dense(64)(x)
fc_a=tf.keras.layers.Dense(name='fc_a',units=3,activation=tf.nn.softmax)(x)
fc_b=tf.keras.layers.Dense(name='fc_b',units=2)(x)
model = tf.keras.Model(inputs=inputs, outputs=[fc_a, fc_b])
model.compile(optimizer='Adam', loss='mean_squared_error',metrics=['mse'])
history=model.fit(X_train,[y1_train,y2_train],epochs=300,batch_size=10)
。。。
预测效果不好,请问,如何进行约束呢?自定义loss 或者激励函数?查了半天,keras的loss都是定义在y_pred 与y_true上的
-
saaad
2020-01-20 16:43