win系统中的torch的DataLoader的数据库需要放在__name__ == 'main’中
Dataset和DataLoade在使用中是同时存在的,先通过重写一个继承Dataset类的子类,然后通过DataLoade进行一定要求的加载数据
DataLoade得到的内部迭代参数是一个列表,对应自己写的Dataset类的子类的返回值
list类型
---没有shape的属性
---可以使用index
import numpy as np
a = np.linspace(0,15,16)
b = a.reshape(4,4)
print(a)
print('!!!!!!!!!!!!!!!!!!')
print(b)
# list才能使用index,需要将整个语句放在中括号中,不然会打印generator。。。
print([el.index(min(el)) for el in b.tolist() ])
from imutils import paths
这种方式加载的路径中不能包含中文字符
from imutils import paths
# 遍历所有图片文件
for i in range(len(img_dir)):
[el for el in paths.list_images(img_dir[i])]
os的常用路径函数
os.getcwd() # 得到当前位置的路径
os.chdir() # 修改工作路径到
os.path.abspath() # 得到文件的绝对路径,包含文件名,可能只是一个快捷方式
os.path.basename() # 文件名
os.path.dirname() # 得到文件的路径(不包含文件名)
os.path.expanduser(path) # 将path字符串转化为路径,但~可以作为用户文件夹的缩写
os.listdir(file_path) #获取指定路径下包含的文件或文件夹列表
# 当没有~时表示将字符串转化为路径
import os
end = os.path.expanduser('~/.config/')
print(end) # C:\Users\MAR/.config/
参考:https://blog.csdn.net/rainshine1190/article/details/85165059
https://blog.csdn.net/mnmiaoyi/article/details/98890446
os.path.abspath和os.path.realpath区别:
返回指定文件的标准路径,而非软链接所在的路径
软连接和对应的硬链接是对linux系统而言的,软连接相当于快捷方式,硬链接相当于重新复制文件,且删除硬链接会将原来的文件也删除
桌面有文件的快捷方式,abs就是快捷方式的路径,real就是快捷方式对应文件的路径,在**window系统**这两个命令得到**结果一样**
DLL load failed: 页面文件太小,无法完成操作`
## 导致的原因:
1、可能电脑进程打开太多,(个人遇到),可以启动任务管理器,将后台多开的python进程关闭一些
2.电脑内存不足
3.后台开了多个python程序,‘windows’操作系统不支持python的多进程操作。而神经网络用到多进程的地方在数据集加载上,所以将DataLoader中的参数num_workers设置为0即可。
python的模块导入顺序
导入的模块同名时,最新导入的有用
同一个名字的不同时间导入,则最近的被使用
import time
from time import time
print(time.time())# 会出现错误,第一个time将失去作用
print(time()) #这里就是正确的
numpy判断数组的相等和不同list的地方
参考:https://blog.csdn.net/qq_17753903/article/details/82707734
np.array.any()是或操作,任意一个元素为True,输出为True。
np.array.all()是与操作,所有元素为True,输出为True
import numpy as np
a = np.linspace(1,16,16).reshape((4,4))
b = np.linspace(3,18,16).reshape((4,4))
print(a==b) # 对数组中每一个元素进行比较得出结果
'''
[[False False False False]
[False False False False]
[False False False False]
[False False False False]]
'''
print((a==b).any()) # False
print((a == b-2).all()) # true
c= a.tolist()
d = a.tolist()
print(c==d) # true
随机模块random
参考:https://blog.csdn.net/weixin_28958535/article/details/113520118
下面这种方式只是在元素值不相同的情况下,因为使用了set集合函数
random.sample(list,num)在list中随机选择num个数据
# 用于元素不同的随机选择
import random
import numpy as np
a = np.linspace(1,16,16)
print(a.tolist())
a = a.tolist()
print(a)
part = set(random.sample(a,4))
print(part)
print('#'*18)
print(set(a)-part)
随机选取值和元素值无关,将数据的索引进行随机选取在原来数据的基础上通过索引随机抽取数据。
import random
import numpy as np
a = np.linspace(1,16,16)
a = a.tolist()
list_long = len(a)
index_all = [i for i in range(list_long)] # 得到列表的最大索引
print(index_all)
part_index = random.sample(index_all,5) # 随机选取索引中的某些值
print(part_index)
# 将索引值作为集合进行加减处理
other_index = list(set(index_all)-set(part_index))
print(other_index)
# 通过索引值得到想要的随机数据
rand_val_list = [a[i] for i in part_index]
print(rand_val_list)
random.shuffle(a),将a中的顺序打乱,直接对a作用
两次的输出不同
import numpy as np
import random
random.seed(0)
a = np.linspace(1,4,4).tolist()
print(a)
random.shuffle(a)
print(a)
版权声明:本文为weixin_43794311原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。