paddle不需要放数据到gpu!
区别:1.batch_norlization 不同
2.
1.数据处理
1.取一个数据,以及计算大小
(剩下的工作,取batch,pytorch会自动做好了)
2.模型相关
如何得到结果
3.模型训练/模型验证:
代码剖析
1.配置文件yaml (字典)
#参数配置
config = {
"train_path":'/kaggle/input/deepshare-playground/train_behaviour.csv',
"test_path":'/kaggle/input/deepshare-playground/test_behaviour.csv',
"debug_mode" : False,
"epoch" : 20,
"batch" : 2048,
"lr" : 0.001,
"device" : 0,
}
使用: config[ '名称' ]
train_df = pd.read_csv(config['train_path'])
if config['debug_mode']:
train_df = train_df[:1000]
test_df = pd.read_csv(config['test_path'])
2.处理数据:定义DataSet
关键:len + getitem(获取单独的一个)
#Dataset构造
class BaseDataset(Dataset):
def __init__(self,df):
self.df = df
self.feature_name = ['user_id','item_id']
#数据编码
self.enc_data()
def enc_data(self):
#使用enc_dict对数据进行编码
self.enc_df = copy.deepcopy(self.df)
for col in self.feature_name:
self.enc_df[col] = torch.Tensor(np.array(self.df[col])).long()
def __getitem__(self, index):
data = dict()
for col in self.feature_name:
data[col] = torch.Tensor([self.enc_df[col].iloc[index]]).long().squeeze(-1)
if 'label' in self.enc_df.columns:
data['label'] = torch.Tensor([self.enc_df['label'].iloc[index]]).squeeze(-1)
return data
def __len__(self):
return len(self.df)
3.模型定义
4.训练与验证
完成Train Pipeline/Valid Pipeline
4.1 拷贝数据->gpu
4.2前向传输
4.3
4.4 指标计算