• Pytorch 神经网络搭建步骤


    文章目录

    import numpy as np
    import torch
    from PIL.Image import Image
    from torch.autograd import Variable
    
    # 获取数据
    def get_data():
        train_X=np.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,7.042,10.791,5.313,7.997,5.654,9.27,3.1])
        train_Y=np.asarray([1.7,2.76,2.09,3.19,1.694,1.537,3.366,2.596,2.53,1.221,2.827,3.465,1.65,2.904,2.42,2.94,1.3])
        dtype=torch.FloatTensor
        X=Variable(torch.from_numpy(train_X).type(dtype),requires_grad=False).view(17,1)
        y=Variable(torch.from_numpy(train_Y).type(dtype),requires_grad=False)
        return X,y
    # 随机参数
    def get_weights():
        w=Variable(torch.randn(1),requires_grad=True)
        b=Variable(torch.randn(1),requires_grad=True)
        return w,b
    w,b=get_weights()
    # 模型计算
    def simple_network(x):
        y_pred=torch.matmul(x,w)+b
        return y_pred
    # 计算损失进行评估
    def loss_fn(y,y_pred):
        loss=(y_pred-y).pow(2).sum()
        for param in [w,b]:
            if not param.grad is None:param.grad.data.zero_()
            loss.backward()
            return loss.data[0]
    # 优化网络
    def optimize(learning_rate):
        w.data-=learning_rate * w.grad.data
        b.data-=learning_rate * b.grad.data
    from torch.utils.data import Dataset
    class DogsAndCatsDataset(Dataset):
        def __init__(self,root_dir,size=(224,224)):
            self.files=globals(root_dir)
            self.size=size
        def __len__(self):
            return len(self.files)
        def __getitem__(self, item):
            img=np.asarray(Image.open(self.files[item]).resize(self.size))
            label=self.files[item].split('/')[-2]
            return img,label
    class myFirstNetwork(torch.nn.Module):
        def __init__(self,input_size,hidden_size,output_size):
            super(myFirstNetwork,self).__init__()
            self.layer1=torch.nn.Linear(input_size,hidden_size)
            self.layer2=torch.nn.Linear(hidden_size,output_size)
        def __forward__(self,input):
            out=self.layer1(input)
            out=torch.nn.ReLU(out)
            out=self.layer2(out)
            return out
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
  • 相关阅读:
    区块链模块化的破局之路
    做测试8年,刚升主管,还是没逃过裁员....
    LSTM 与 GRU
    不断迭代的收银系统,工厂_策略_装饰器_反射
    Java 并发包 park/unpark原理
    成都精灵云C++ 二面(hr面,30min)
    linux离线环境安装redis
    Springboot中国古代史在线学习网站毕业设计源码260839
    大数据技术与原理实验报告(MapReduce 初级编程实践)
    负数如何取模?深度理解取模:取余运算
  • 原文地址:https://blog.csdn.net/Wantfly9951/article/details/132818227