【问题标题】:How to train a LSTM model with multiple separate training datas?如何用多个单独的训练数据训练 LSTM 模型?
【发布时间】:2020-12-15 20:45:11
【问题描述】:

我有 100 个人在 1 年内的销售额数据。

我想让 ONE 模型预测所有 100 次销售男士的销售。

这是我的代码:

model=Sequential()

y_train=sells_men_sell[1] # sells_men_sell[1] is a 1d array that contains the first sells  man's sells record

x_train=sells_men_data[1] # sells_men_sell[1] is a array that contains the first sells  man's sells record for training
#, each value in the array(sells_men_sell) contains the sells record for the past 30 days.

model.add(LSTM(50, input_shape=(x_train.shape[1], x_train.shape[2])))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(x_train, y_train, batch_size=1, epoch=1)

我知道在一个模型中预测 100 名销售人员听起来很奇怪,但我这样做是为了一个项目。

我应该如何处理我的代码?

我应该在model.fit(x_train, y_train, batch_size=1, epoch=1)之后添加以下代码吗?

y_train1=sells_men_sell[2] # sells_men_sell[2] is a 1d array that contains the second sells  man's sells record

x_train1=sells_men_data[2] # sells_men_sell[2] is a array that contains the second sells man's sells record for training

model.add(LSTM(50, input_shape=(x_train1.shape[1], x_train1.shape[2])))
model.fit(x_train1, y_train1, batch_size=1, epoch=1)

【问题讨论】:

  • 你的模型有 100 个不同的输入层吗?
  • Aniket Bote,你的意思是在模型中添加 100 个 LSTM 层吗?
  • 检查下面的答案。那是你要的吗。我已经根据你的标题给出了答案。
  • 你能解释一下你到底想要什么,以便我修改我的答案。

标签: python machine-learning keras neural-network lstm


【解决方案1】:

您的模型可以有多个输入和多个输出。您可以使用函数式 API 来实现这一点。
我分享了一个关于如何实现这一目标的小例子。您可以根据您的用例调整示例。

代码:

# imports
import tensorflow as tf
import pandas as pd 
import numpy as np

# genration of dummy data
x1 = np.random.randint(100, size =(5, 5, 5), dtype = np.int16)
x2 = np.random.randint(100, size =(5, 4, 4), dtype = np.int16)
y1 = np.random.randint(2, size =(5,), dtype = np.int16)
y2 = np.random.randint(2, size =(5,), dtype = np.int16)

# creation of model
def create_model3():
    input1 = tf.keras.Input(shape=(5,5,), name = 'I1')
    input2 = tf.keras.Input(shape=(4,4,), name = 'I2')
    
    hidden1 = tf.keras.layers.LSTM(units = 4)(input1)
    hidden2 = tf.keras.layers.LSTM(units = 4)(input2)
    merge = tf.keras.layers.concatenate([hidden1, hidden2])
    hidden3 = tf.keras.layers.Dense(units = 3, activation='relu')(merge)
    output1 = tf.keras.layers.Dense(units = 2, activation='softmax', name ='O1')(hidden3)
    output2 = tf.keras.layers.Dense(units = 2, activation='softmax', name = 'O2')(hidden3)
    
    model = tf.keras.models.Model(inputs = [input1,input2], outputs = [output1,output2])
    
    model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    return model



model = create_model3()
tf.keras.utils.plot_model(model, 'my_first_model.png', show_shapes=True)

# training the model
history = model.fit(
    x = {'I1':x1, 'I2':x2}, 
    y = {'O1':y1, 'O2': y2},
    batch_size = 32,
    epochs = 10,
    verbose = 1,
    callbacks = None,
#     validation_data = [(val_data,new_val_data),(val_labels, new_val_labels)]
)

生成的模型如下所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2016-10-19
    • 2018-01-30
    • 2017-08-19
    相关资源
    最近更新 更多