【发布时间】:2022-08-17 14:48:14
【问题描述】:
每次观察是否有可能有一个带有样本权重的服装均方误差函数?
我能够利用标准的fastai 训练循环,并且能够在PyTorch 中实现这种服装损失。
如何将其放在表格数据上的fastai 学习者对象中?
我知道keras 已经在.fit 方法中实现了这一点,其中sample_weight 参数存在。
def weighted_mse_loss(input, target, weight):
return torch.sum(weight * (input - target) ** 2)
from fastai.tabular.all import *
import seaborn as sns
df = sns.load_dataset(\'tips\')
df = df.assign(sample_weight = np.random.normal(size = df.shape[0], loc = 10, scale = 2))
y = [\'total_bill\']
cont = [\'tip\']
cat = [\'sex\', \'smoker\', \'day\', \'time\', \'size\']
procs = [Normalize, Categorify]
df[\"Y\"] = np.log(df[y] + 1)
MIN = df[\"Y\"].min()
MAX = df[\"Y\"].max()
splits = RandomSplitter(valid_pct=0.2)(range_of(df))
to = TabularPandas(
df,
procs=procs,
cat_names=cat,
cont_names=cont,
y_names=\"Y\",
splits=splits,
y_block=RegressionBlock(n_out = 1),
)
dls = to.dataloaders(
bs=64, shuffle_train=True
)
config = tabular_config(
embed_p=0.05,
y_range=[0, MAX * 1.1],
bn_final=False,
ps=[0.05, 0.05, 0.05],
)
learner = tabular_learner(
dls,
layers=[1000, 500, 250],
config=config,
wd=0.2,
metrics=[rmse,],
)
learner.fit_one_cycle(40, lr_max = 0.01,
wd = 0.1)
标签: keras pytorch regression fast-ai