kaggle比赛中模型融合是提分的关键,下面是算好四个模型后,submission, 用tensorflow进行的融合,来源kaggle中能源比赛
在这里插入代码片
X_train = np.array([leak_df['pred1'].values,leak_df['pred2'].values, leak_df['pred3'].values, leak_df['pred4'].values]).T
print(X_train)
y_train = leak_df.meter_reading_l1p
import tensorflow as tf
weights = tf.Variable([[0.2],[0.2],[0.2],[0.2]])
print(weights)
steps = 1000
lr = 0.1
opt = tf.optimizers.SGD(lr)
#import pdb
#Speed up the train step by precompiling
@tf.function()
def train_step(opt):
#pdb.set_trace()
with tf.GradientTape() as tape:
y = tf.matmul(X_train, weights)[:,0]
#pdb.set_trace()
loss = tf.reduce_mean((tf.math.log1p(y) - y_train) ** 2)
grads = tape.gradient(loss, weights) #计算梯度
opt.apply_gradients([(grads, weights)])#更新梯度
return loss
prev_loss = 9999
for i in range(steps):
loss = train_step(opt)
if loss > prev_loss:
lr /= 2
opt.lr = lr
prev_loss = loss
print(f'step: {i} {loss.numpy()}')
来源
```https://www.kaggle.com/miaorain/ashrae-leak-validation-gradient-miao1219