我有一年内100名销售人员的销售数据。
我想用一个模型来预测所有100名销售人员未来的销售情况。
这是我的代码:
model=Sequential()y_train=sells_men_sell[1] # sells_men_sell[1] 是包含第一位销售人员销售记录的一维数组x_train=sells_men_data[1] # sells_men_sell[1] 是包含第一位销售人员用于训练的销售记录的数组,每个数组中的值(sells_men_sell)包含过去30天的销售记录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] 是包含第二位销售人员销售记录的一维数组x_train1=sells_men_data[2] # sells_men_sell[2] 是包含第二位销售人员用于训练的销售记录的数组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)
回答:
您的模型可以有多个输入和多个输出。您可以使用函数式API来实现这一点。
我已经分享了一个小示例,展示了如何实现这一点。您可以根据您的用例调整这个示例。
代码:
# 导入import tensorflow as tfimport pandas as pd import numpy as np# 生成虚拟数据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)# 创建模型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 modelmodel = create_model3()tf.keras.utils.plot_model(model, 'my_first_model.png', show_shapes=True)# 训练模型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)])
生成的模型看起来像这样。