Closed jersonal closed 4 months ago
您好,我利用transhformer去训练负荷预测的数据,用20个时间段的数据预测1个时间段,shape为(10000,20),output shape为(10000,1),其中超参数: `vocab_size = 5000 maxlen = 20 model_dim = 512 # 词嵌入的维度 batch_size = 32 epochs = 10 num_layers = 2 inputs = Input(shape=(maxlen,), name="inputs") transformer = Transformer(num_layers=num_layers, vocab_size=vocab_size, heads=8, model_dim=model_dim, drop_rate=0.2, units_dim=512, epsilon=0.001)(inputs) x_n_data,y_n_data = generate_data(maxlen,1)# 我自己生成训练数据的函数
outputs = Dense(256, activation='relu')(transformer) outputs = Dense(1, activation='relu')(outputs)
model = Model(inputs=inputs, outputs=outputs) model.compile(optimizer=Adam(learning_rate=1e-3), loss='mse', metrics=['mse'])` 最后训练出来发现结果很差,loss mse在0.2左右,实际预测的结果都是0,我不知道是哪儿出了问题,不知道您是否能解答一下?
您好,输入的维度应该是3d张量,(batch_size,句子长度,字向量编码) ,keras会自动处理batch_size,所以代码中看到的input只有2维,但实际上输入应该为3维
您好,我利用transhformer去训练负荷预测的数据,用20个时间段的数据预测1个时间段,shape为(10000,20),output shape为(10000,1),其中超参数: `vocab_size = 5000 maxlen = 20 model_dim = 512 # 词嵌入的维度 batch_size = 32 epochs = 10 num_layers = 2 inputs = Input(shape=(maxlen,), name="inputs") transformer = Transformer(num_layers=num_layers, vocab_size=vocab_size, heads=8, model_dim=model_dim, drop_rate=0.2, units_dim=512, epsilon=0.001)(inputs) x_n_data,y_n_data = generate_data(maxlen,1)# 我自己生成训练数据的函数
我将最后transformer的输出加入两层Dense层,以适应我的数据
outputs = Dense(256, activation='relu')(transformer) outputs = Dense(1, activation='relu')(outputs)
model = Model(inputs=inputs, outputs=outputs) model.compile(optimizer=Adam(learning_rate=1e-3), loss='mse', metrics=['mse'])` 最后训练出来发现结果很差,loss mse在0.2左右,实际预测的结果都是0,我不知道是哪儿出了问题,不知道您是否能解答一下?