pytorch学习的一些tips(8)

用字典初始化参数:

用字典初始化参数,命名两个字典,一个是参数字典,一个是超参数字典,用logger.info输出

定义字典

Python 字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。

字典类型是 Python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素。如图 1 所示。

字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。

创建字典

由于字典中每个元素都包含两部分,分别是键(key)和值(value),因此在创建字典时,键和值之间使用冒号:分隔,相邻元素之间使用逗号,分隔,所有元素放在大括号{ }中。

使用{ }创建字典的语法格式如下:

dictname = {'key':'value1', 'key2':'value2', ..., 'keyn':valuen}
param = dict()
param['datadir'] = datadir
param['dataname'] = dataname
param['device'] = device
param['bidirect'] = bidirect
param['seed'] = seed

获取字典

keys()、values() 和 items() 这三个方法都可以用来获取字典中的特定数据:

  • keys() 方法用于返回字典中的所有键(key);
  • values() 方法用于返回字典中所有键对应的值(value);
  • items() 用于返回字典中所有的键值对(key-value)。
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
for k, v in d.items():
    logger.info(f'{k}:{v}')

注意

当字典中有一个键值对的value为none时,输出要特殊对待

param['seed'] = None

不然打印时会报错

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
for k, v in d.items():
    if (v != None):
        logger.info(f'{k}:{v}')

关于none

在 Python 中,有一个特殊的常量 None(N 必须大写)。和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值。
这里的空值并不代表空对象,即 None 和 []、“” 不同:

>>> None is []
False
>>> None is ""
False

None 有自己的数据类型,我们可以在 IDLE 中使用 type() 函数查看它的类型,执行代码如下:

>>> type(None)
<class 'NoneType'>

可以看到,它属于 NoneType 类型。
需要注意的是,None 是 NoneType 数据类型的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined),也就是说,我们不能再创建其它 NoneType 类型的变量,但是可以将 None 赋值给任何变量。如果希望变量中存储的东西不与任何其它值混淆,就可以使用 None。
 


模型的保存和读取

模型的保存

 保存方式二仅保存模型参数,将模型的参数保存成字典的形式。

模型的读取

 读取方式二,load_state_dict()以字典的形式读取模型的参数,这种情况要重新定义模型


在测试集上准确率最高的模型在测试集上也将会是准确率最高的吗?

验证集怎么使用?


遇到了一个问题,打印tensor的某一维时候要用中括号,不能用小括号,总感觉遇到过这个问题。。。。

a=torch.rand(2,3)
print(a[0])

遇到问题:'_IncompatibleKeys' object has no attribute 'train'

model=model.load_state_dict(beat_model)
不对,应改正为
model.load_state_dict(beat_model)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值