LSTM 多任务学习函数 api keras
LSTM multi task learning functional api keras
我有 2 个火车值 X_data、B_data。我想要 2 个共享的 lstm 层来预测 X_data 和 B_data
的 2 个输出
l1 = layers.LSTM(40)(X_data)
flat_layer = Flatten()(l1)
l2 = layers.LSTM(20)(B_data)
flat_layer2 = Flatten()(l2)
output1 = Dense(1, activation='sigmoid')(flat_layer)
output2 = Dense(1, activation='sigmoid')(flat_layer2)
model = keras.Model(inputs=[X_data,B_data], outputs=[output1,output2])
我认错了
AttributeError: Tensor.op is meaningless when eager execution is enabled.
有什么建议吗?
错误是keras.Model(inputs)
没有接受输入data而是输入layer(就像你做的一样使用 outputs
正确)。数据通过 model.fit()
传递。所以首先,你需要两个 Input
层:
X_data = np.random.uniform(0,1,(3,100,40))
B_data = np.random.uniform(0,1,(3,100,20))
y1 = np.random.uniform(0,1,(3,1))
y2 = np.random.uniform(0,1,(3,1))
i1 = Input((100,40)) # you need input layers
i2 = Input((100,20))
l1 = LSTM(40)(i1)
flat_layer = Flatten()(l1)
l2 = LSTM(20)(i2)
flat_layer2 = Flatten()(l2)
output1 = Dense(1, activation='sigmoid')(flat_layer)
output2 = Dense(1, activation='sigmoid')(flat_layer2)
model = tf.keras.Model(inputs=[i1,i2], outputs=[output1,output2])
model.compile('sgd', 'mse')
model.fit(x=[X_data,B_data], y=[y1,y2]) # this is where you pass input (data) and output (labels)
我的数据框就是这样,我转换为输入数据
trainxx=np.array(trainn3)
X_data = trainxx.reshape((trainxx.shape[0], 1, trainxx.shape[1]))
y 值是 numpy 数组
ytrainxx=np.array(ytrains)
而你的输入法我无法转换
我有 2 个火车值 X_data、B_data。我想要 2 个共享的 lstm 层来预测 X_data 和 B_data
的 2 个输出l1 = layers.LSTM(40)(X_data)
flat_layer = Flatten()(l1)
l2 = layers.LSTM(20)(B_data)
flat_layer2 = Flatten()(l2)
output1 = Dense(1, activation='sigmoid')(flat_layer)
output2 = Dense(1, activation='sigmoid')(flat_layer2)
model = keras.Model(inputs=[X_data,B_data], outputs=[output1,output2])
我认错了
AttributeError: Tensor.op is meaningless when eager execution is enabled.
有什么建议吗?
错误是keras.Model(inputs)
没有接受输入data而是输入layer(就像你做的一样使用 outputs
正确)。数据通过 model.fit()
传递。所以首先,你需要两个 Input
层:
X_data = np.random.uniform(0,1,(3,100,40))
B_data = np.random.uniform(0,1,(3,100,20))
y1 = np.random.uniform(0,1,(3,1))
y2 = np.random.uniform(0,1,(3,1))
i1 = Input((100,40)) # you need input layers
i2 = Input((100,20))
l1 = LSTM(40)(i1)
flat_layer = Flatten()(l1)
l2 = LSTM(20)(i2)
flat_layer2 = Flatten()(l2)
output1 = Dense(1, activation='sigmoid')(flat_layer)
output2 = Dense(1, activation='sigmoid')(flat_layer2)
model = tf.keras.Model(inputs=[i1,i2], outputs=[output1,output2])
model.compile('sgd', 'mse')
model.fit(x=[X_data,B_data], y=[y1,y2]) # this is where you pass input (data) and output (labels)
我的数据框就是这样,我转换为输入数据
trainxx=np.array(trainn3)
X_data = trainxx.reshape((trainxx.shape[0], 1, trainxx.shape[1]))
y 值是 numpy 数组
ytrainxx=np.array(ytrains)
而你的输入法我无法转换