1. colab的使用
  2. 把训练集取出一部分作为验证集
  3. 选择特征
  4. tqdm,tensorboard使用
  5. 在训练和验证时要关闭梯度计算
  6. 要把模型和数据放在同一个device上
  7. 保证模型可复现性
  8. pytorch和numpy在生成数组上的区别

一、colab的使用

1 把谷歌云盘mount到colab上面:

from google.colab import drive
drive.mount('/content/device')

/ 表示当前站点的根目录(域名映射的硬盘目录)

2魔法方法:
percentage (%) affects the process associated with the notebook, and it is called a magic command.

%cd /content/device/MyDrive/

Use % instead of ! for cd (change directory) command

3其他命令
exclamation mark (!) starts a new shell, does the operations, and
then kills that shell

二、从train_set提取做验证集

def train_valid_split(data_set, valid_ratio, seed):'''Split provided training data into training set and validation set'''valid_set_size = int(valid_ratio * len(data_set)) train_set_size = len(data_set) - valid_set_sizetrain_set, valid_set = random_split(data_set, [train_set_size, valid_set_size], generator=torch.Generator().manual_seed(seed))#返回的是dataset类,实现了__getitem__方法                                                                                                                           # fix the generator for reproducible resultsreturn np.array(train_set), np.array(valid_set)#必须得有这一步,否则返回的和列表差不多,无法选择特征(

三、选择特征

def select_feat(train_data, valid_data, test_data, select_all=True):'''Selects useful features to perform regression'''y_train, y_valid = train_data[:,-1], valid_data[:,-1]#所有行的最后一列raw_x_train, raw_x_valid, raw_x_test = train_data[:,37:-1], valid_data[:,37:-1], test_data#所有行且37到倒数第二列if select_all:feat_idx = list(range(raw_x_train.shape[1]))else:feat_idx = [0,1,2,3,4] # TODO: Select suitable feature columns.return raw_x_train[:,feat_idx], raw_x_valid[:,feat_idx], raw_x_test[:,feat_idx], y_train, y_valid

四、tdqm,tensorboard使用

显示进度条

 for epoch in range(n_epochs):model.train() # Set your model to train mode.loss_record = []# tqdm is a package to visualize your training progress.train_pbar = tqdm(train_loader, position=0, leave=True)for x, y in train_pbar:optimizer.zero_grad()               # Set gradient to zero.x, y = x.to(device), y.to(device)   # Move your data to device. pred = model(x)             loss = criterion(pred, y)loss.backward()                     # Compute gradient(backpropagation).optimizer.step()                    # Update parameters.step += 1loss_record.append(loss.detach().item())# Display current epoch number and loss on tqdm progress bar.train_pbar.set_description(f'Epoch [{epoch+1}/{n_epochs}]')train_pbar.set_postfix({'loss': loss.detach().item()})mean_train_loss = sum(loss_record)/len(loss_record)writer.add_scalar('Loss/train', mean_train_loss, step)

五、训练和验证进入验证模式,关闭梯度计算

        model.eval() # Set your model to evaluation mode.loss_record = []for x, y in valid_loader:x, y = x.to(device), y.to(device)with torch.no_grad():pred = model(x)loss = criterion(pred, y)loss_record.append(loss.item())

为什么要进入验证模式:
关闭batch_Norm和dropout
为什么要停止梯度计算
不需要更新模型,不需要求梯度了

六、模型和数据在同一个设备上

device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = My_Model(input_dim=x_train.shape[1]).to(device)for x, y in valid_loader:x, y = x.to(device), y.to(device)

七、保证模型可复现性

def same_seed(seed): '''Fixes random number generator seeds for reproducibility.'''torch.backends.cudnn.deterministic = True#每次返回的卷积算法将是确定的torch.backends.cudnn.benchmark = False#A bool that, if True, causes cuDNN to benchmark multiple convolution algorithms and select the fastest.np.random.seed(seed)#保证每次生成随机数一样(可是np怎么确保torch)torch.manual_seed(seed)#设置生成随机数的种子if torch.cuda.is_available():torch.cuda.manual_seed_all(seed)#为当前GPU设置生成随机数的种子

八、pytorch和numpy在生成数组上的区别


numpy可以用含有numpy数组的列表生成数组,但pytorch不可以

李宏毅2022机器学习HW1收获相关推荐

  1. 李宏毅2022机器学习HW2解析

    准备工作:去课程github下载原始代码,kaggle下载数据集.或者关注本公众号,下载代码和数据集(文末有方法).解压数据集,出现libriphone文件夹,将文件和代码放到同一目录下. kaggl ...

  2. 李宏毅2022机器学习HW5解析

    准备工作 作业五是机器翻译,需要助教代码,运行代码过程中保持联网可以自动下载数据集,已经有数据集的情况可关闭助教代码中的下载数据部分.关注本公众号,可获得代码和数据集(文末有方法). 提交地址 这次作 ...

  3. 李宏毅2022机器学习HW10解析

    准备工作 作业十是黑箱攻击(Blackbox Attack),完成作业需要助教代码和数据集,运行代码过程中保持联网可以自动下载数据集,已经有数据集的情况可关闭助教代码中的下载数据部分.关注本公众号,可 ...

  4. 李宏毅2022机器学习hw6

    目录 ​Machine Learning HW6 一.任务 二.数据集 Crypko: 三.结果 四.改进方法 4.

  5. 【李宏毅《机器学习》2022】作业1:COVID 19 Cases Prediction (Regression)

    文章目录 [李宏毅<机器学习>2022]作业1:COVID 19 Cases Prediction (Regression) 作业内容 1.目标 2.任务描述 3.数据 4.评价指标 代码 ...

  6. 李宏毅《机器学习》国语课程(2022)来了

    提起李宏毅老师,熟悉机器学习的读者朋友一定不会陌生.很多人选择的机器学习入门学习材料都是李宏毅老师的台大公开课视频.今年李宏毅老师开设一门新的机器学习机器学习课程,涵盖最新热门主题,非常值得关注! 李 ...

  7. 【千呼万唤】李宏毅《机器学习》国语课程(2022)终于来了

    提起李宏毅老师,熟悉机器学习的读者朋友一定不会陌生.很多人选择的机器学习入门学习材料都是李宏毅老师的台大公开课视频.今年李宏毅老师开设一门新的机器学习机器学习课程,涵盖最新热门主题,非常值得关注! 李 ...

  8. 李宏毅机器学习HW1

    本博文主要是完成李宏毅机器学习HW1作业 作业连接:https://ntumlta2019.github.io/ml-web-hw1/ 作业规则 所有代码必须用python3.6编写 允许所有pyth ...

  9. 李宏毅机器学习-HW1

    文章目录 前言 一.分析目标 二.数据预处理 1.初步处理 2.特征提取 3.Normalize和切分训练集和验证集 三.训练 四.验证 五.预测 1.数据预处理 2.预测 3.写入文件 总结 前言 ...

最新文章

  1. 5G NGC — GTPv1-U 协议的扩展
  2. 【安全漏洞】CVE-2021-1732 win32k漏洞分析
  3. linux下改变文件的字符编码
  4. Unique Email Addresses
  5. 如何将百度文库中不能复制的文字复制下来
  6. 《前端技巧》文件下载功能在苹果手机中的特殊处理
  7. coreseek java_coreseek 安装及使用方法详解
  8. 智慧工厂3D物联网可视化建模管理系统
  9. c语言俩小时不挂科——全程高能,没有废话
  10. 无人机油动发动机调试
  11. java 雪崩效应,七、微服务架构中的“雪崩效应”
  12. 程序人生 - BD 电影 HD 电影有什么区别啊?哪个好啊?
  13. 学习笔记 - 正态分布
  14. CH552-HID 键盘 鼠标
  15. 自学python接单_Python接私活,兼职轻松月薪过万,会技术就可走遍天下
  16. 干货分享丨精心整理了份Python知识点高清速查表!太受用了!
  17. 错题集:HDLBits lfsr5 Galois型lfsr
  18. JMeter - 如何测试REST API / 微服务
  19. MySQL实现定时任务
  20. 小涛python学习路程-(2)编程基本概念

热门文章

  1. vue项目使用 npm run build 打包后出现样式错乱问题解决方法
  2. L1X-2 矩阵转置 (10 分)
  3. 计算机考证可以叫别人考吗
  4. 做到这些,考研就成功了一半
  5. 服务器布署(一):阿里云服务器,配合宝塔使用(网页端宝塔)
  6. jsb.reflection.callStaticMethod
  7. Examples osggeometry
  8. 基于Python的二次元头像生成器 课程报告+源码
  9. java简易的贴吧邮箱爬虫
  10. 客户端应用试用限制设计