使用pytorch创建resnet模型

使用pytorch创建resnet模型

环境 win11 rtx3060
anaconda 2020.07
tensorflow 2.4.1
cuda 11.1
cndnn 8.0.5
python 3.8
pytorch 1.8
tensorflow-addons 0.15.0
pandas 1.3.5
seaborn 0.11.2
numpy 1.19.5
pytorch=1.8

导入数据
https://blog.csdn.net/ChaoFeiLi/article/details/109764566
加载数据

data = np.load('data.npz')
data_features = data['data_features']
data_labels = data['data_labels']

切割数据

random_state=26
x_train, x_test, y_train_onehot, y_test_onehot = train_test_split(data_features, data_labels, test_size=0.3,
                                                                          random_state=random_state)
x_test, x_val, y_test_onehot, y_val_onehot = train_test_split(x_test, y_test_onehot, test_size=0.3,
                                                                      random_state=random_state)

转化为tensor

x_train, y_train_onehot,x_test,y_test_onehot,x_val,y_val_onehot= \
    torch.as_tensor(x_train),torch.as_tensor(y_train_onehot),torch.as_tensor(x_test),\
    torch.as_tensor(y_test_onehot),torch.as_tensor(x_val),torch.as_tensor(y_val_onehot)

将数据和标签放一块

# 定义CustomDataset类,继承Dataset方法,并重写__getitem__()和__len__()方法
class CustomDataset(torch.utils.data.Dataset):
    # 初始化函数,得到数据
    def __init__(self, Data, Label):
        self.data = Data  # 传入了dataset X的路径,并使用np.load进行加载数据
        self.label = Label  # 传入了label Y的路径
    # index是根据batchsize划分数据后得到的索引,最后将data和对应的labels进行一起返回
    def __getitem__(self, index):
        data = self.data[index]
        labels = self.label[index]
        return data, labels
    # 该函数返回数据大小长度,目的是DataLoader方便划分,如果不知道大小,DataLoader会一脸懵逼
    def __len__(self):
        return len(self.data)
train_data = CustomDataset(x_train, torch.argmax(y_train_onehot, -1))
test_data = CustomDataset(x_test, torch.argmax(y_test_onehot, -1))
val_data = CustomDataset(x_val, torch.argmax(y_val_onehot, -1))

读取数据

train_data = DataLoader(train_data, batch_size=128, shuffle=True, drop_last=False, num_workers=0)
val_data = DataLoader(val_data, batch_size=128, shuffle=True, drop_last=False, num_workers=0)
test_data = DataLoader(test_data, batch_size=128, shuffle=True, drop_last=False, num_workers=0)

自适应学习率
https://blog.csdn.net/qq_41554005/article/details/119879911

在ResNet网络中添加注意力机制
注意点:因为不能改变ResNet的网络结构,所以CBAM不能加在block里面(也可以加在block里面,此时网络不能加载预训练参数),因为加在block里面网络结构发生了变化,所以不能用预训练参数。加在最后一层卷积和第一层卷积不改变网络,可以用预训练参数。
https://blog.csdn.net/qq_37278761/article/details/117249138

保存数据
https://blog.csdn.net/qq_24193303/article/details/107756245

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值