孤独症项目(1)

年也过了,也不能一直玩,该学习还是要学习。
过年前我算是把环境配置好,然后把项目跑起来了,现在的问题是我看不懂这个代码什么意思
代码还是要一行一行看,每一行都看懂了,全文自然就知道了
1

from pathlib import Path
import argparse
import yaml
import torch
import os
import random
import numpy as np
import torch.backends.cudnn as cudnn

这个就是导入一堆库,这里面就torch最麻烦,因为不但要配torch还要配cuda,而且通过命令是无法执行完成的。因为太大了,在下载的过程中会出现各种各样的问题,因此把torch下载到本地,然后再安装是唯一的办法。
2

from train import BasicTrain

from model.model import PLSNet
from dataloader import init_dataloader

这一部分导入的不是python的官方库,而是本地的.py文件。这里就是导入了train.py,model.py,dataloader.py文件
3

if __name__ == '__main__':
    os.environ["CUDA_VISIBLE_DEVICES"] = "1"
    parser = argparse.ArgumentParser()
    parser.add_argument('--config_filename', default='setting/abide_PLSNet.yaml', type=str,
                        help='Configuration filename for training the model.')
    parser.add_argument('--repeat_time', default=100, type=int)
    args = parser.parse_args()
    torch.cuda.set_device(0)
    # 控制随机性
    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    if torch.cuda.is_available():
        torch.cuda.manual_seed_all(seed)

    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)

    # cudnn.benchmark = False
    cudnn.deterministic = True

    for i in range(args.repeat_time):
        main(args)

if name == ‘main’:这一句其实我觉得莫名其妙,不习惯,就当做路人npc算了。
os.environ[“CUDA_VISIBLE_DEVICES”] = "1"我查了一圈,原来这个是用来指定gpu的,可是我电脑上只有一个gpu啊
在这里插入图片描述
我在控制台界面输入nvidia-smi得到的结果就是我只有一个gpu,而且编号为0,那这一句应该改一下os.environ[“CUDA_VISIBLE_DEVICES”] = “0”
,也不知道我之前怎么运行成功的

    parser = argparse.ArgumentParser()
    parser.add_argument('--config_filename', default='setting/abide_PLSNet.yaml', type=str,
                        help='Configuration filename for training the model.')
    parser.add_argument('--repeat_time', default=100, type=int)
    args = parser.parse_args()

我这个项目的readme里面告诉我在控制台界面要执行命令
python main.py --config_filename setting/abide_RGTNet.yaml
为什么控制台能够识别–config_filename呢,就是因为parser是一个对象,argumentparser这个对象的一个实例。
add_argument是一个方法,添加了参数,比如此处就定义了–config_filename和–repeat_time这两个参数
我终于懂args到底是干嘛用的了,args.config_filename和args.repeat_time,就是用来访问这两个参数的。
4

    torch.cuda.set_device(0)
    # 控制随机性
    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    if torch.cuda.is_available():
        torch.cuda.manual_seed_all(seed)

    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)

    # cudnn.benchmark = False
    cudnn.deterministic = True

这一段是用到了torch方法。torch.cuda.set_device(0)这个是最简单的,就是选中gpu设备,我也没啥好选的,只有一个gtx960M
seed = 0
random.seed(seed)
np.random.seed(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(seed)

torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)这几句话一个意思都是为了结果可以复现,如果不设定一个固定的seed,那么每次运行的结果都不一样,没有可参考性
cudnn.deterministic = True原来这个也是为了结果具有可重复性

5

    for i in range(args.repeat_time):
        main(args)

此处是重复执行100次main主函数
6yaml文件是配置文件
fold: 0

time_seires: /data/CodeGoat24/FBNETGEN/ABIDE_pcp/abide.npy

time_seires: /data/CodeGoat24/FBNETGEN_ho/ABIDE_pcp/abide.npy

time_seires: ./data/CodeGoat24/FBNETGEN_AAL/ABIDE_pcp/abide.npy

time_seires: /data/CodeGoat24/FBNETGEN_cc400/ABIDE_pcp/abide.npy

model:
type: PLSNet
extractor_type: attention
embedding_size: 8
window_size: 4

cnn_pool_size: 16

num_gru_layers: 4

dropout: 0.5

train:
lr: 1.0e-4
weight_decay: 1.0e-4
epochs: 500
pool_ratio: 0.7
optimizer: adam
stepsize: 200

group_loss: true
sparsity_loss: true
sparsity_loss_weight: 0.5e-4
log_folder: result

uniform or pearson

pure_gnn_graph: pearson
这个配置文件里的神经网络我看不懂了,我得去看个视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值