在复现AlexNet神经网络时遇到的一些问题

最近在复现AlexNet分类神经网络时,遇到了一些重复出现的问题,特此在这记录一下。

  • 1.这一部分主要是针对python的os操作

  • random.seed():使用该函数可以保证随机生成的数据具有可复现性,即

保证随机性具有可复现性,只要seed()里的数字不变,下一次生成的随机数不变
import numpy as np
np.random.seed(0)
num = np.random.randint(1,10,(3,2))
print(num)
  • os.getcwd():返回当前python文件所在的目录

import os
cwd = os.getcwd()
print(cwd)
  • os.path.join():拼接文件目录,可以同时拼接多个目录

    root1 = os.path.join(cwd,'dd','bb','kk')
    print(root1)

  • 断言assert:条件为False时执行,条件为True时不执行

    x = 4
    assert x > 5,"警告!x小于5了"
     
  •  os.path.exists():测试该路径目录或文件是否存在,存在返回True,不存在返回Fals

    root = os.path.join(os.getcwd(),'flower_data','flower_photos')
    print(os.path.exists(root))
    assert os.path.exists(root),f"警告,该{root}不存在!"

  • os.listdir():返回该目录下的所有文件夹和文件

    root = os.path.join(os.getcwd(),'flower_data','flower_photos')
    print(os.listdir(root))
     
  • os.path.isdir():测试该目录是否存在,存在返回Tru,不存在返回False(不能用于测试文件,测试文件不管文件是否存在都会返回False)

    root = os.path.join(os.getcwd(),'flower_data','flower_photos','LICENSE.txt')
    print(os.path.isdir(root))
     
  • list = [i for in 集合 if i 逻辑条件]:把集合中符合逻辑条件的i添加到list列表中去

    list1 = [i for i in range(5,20) if i >= 10]
    print(list1)
     
  • os.makedirs():新建目录文件    os.rmdir():删除目录文件

    root = os.path.join(os.getcwd(),'flower_data','ctd')
    os.makedirs(root)
    os.rmdir(root)
     
  • 2.这一部分是针对神经网络的

  • nn.init.kaiming_normal_():凯明权重初始化方法

    from torch import nn
    list1 = [[0.5513, 0.9908, 0.1751, 0.5281, 0.1055],
            [0.3166, 0.1625, 0.0898, 0.7519, 0.1822],
            [0.0461, 0.2430, 0.9435, 0.0249, 0.5389]]
    tensor1 = torch.Tensor(list1)
    print(f"初始化前tensor1:{tensor1}")
    nn.init.kaiming_normal_(tensor1,mode="fan_out",nonlinearity='relu')
    print(f"初始化后tensor2:{tensor1}")
    
    list2 = [[0.5513, 0.9908, 0.1751, 0.5281, 0.1055],
            [0.3166, 0.1625, 0.0898, 0.7519, 0.1822],
            [0.0461, 0.2430, 0.9435, 0.0249, 0.5389]]
    tensor2 = torch.Tensor(list2)
    print(f"初始化前tensor1:{tensor2}")
    nn.init.kaiming_normal_(tensor2,mode="fan_in",nonlinearity='relu')
    print(f"初始化后tensor2:{tensor2}")
    
    list3 = [[0.5513, 0.9908, 0.1751, 0.5281, 0.1055],
            [0.3166, 0.1625, 0.0898, 0.7519, 0.1822],
            [0.0461, 0.2430, 0.9435, 0.0249, 0.5389]]
    tensor3 = torch.Tensor(list3)
    print(f"初始化前tensor1:{tensor3}")
    nn.init.kaiming_normal_(tensor3,mode="fan_out",nonlinearity='relu')
    print(f"初始化后tensor2:{tensor3}")

     

  • nn.init.constant_():偏置初始化

    from torch import nn
    list1 = [[0.5513, 0.9908, 0.1751, 0.5281, 0.1055],
            [0.3166, 0.1625, 0.0898, 0.7519, 0.1822],
            [0.0461, 0.2430, 0.9435, 0.0249, 0.5389]]
    tensor1 = torch.Tensor(list1)
    print(f"初始化前tensor1:{tensor1}")
    nn.init.constant_(tensor1,0.2)
    print(f"初始化后tensor2:{tensor1}")

     

  • item():用于将张量特定位置的元素转换为python的基本数据类型

    tensor = torch.randn(3,2)
    
    print(tensor)
    
    num = tensor[2,1].item()
    print(f"num:{num}\nnum的类型:{type(num)}")
     
  • torch.max()的用法

    tensor = torch.Tensor([[7, 3, 9, 1, 4],
            [9, 3, 2, 9, 5],
            [5, 5, 4, 5, 3],
            [5, 4, 2, 8, 8]])
    print(tensor)
    # dim=1按行最大 torch.max()返回两个元素,一个是最大元素,一个是最大元素的位置
    tensor = torch.max(tensor,dim=1)
    print(f"最大元素:{tensor[0]}\n最大元素的位置:{tensor[1]}")
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值