Python 的多线程可以优化许多高耗时的阻塞性步骤。比如机器学习中的储存模型等步骤,如果串行储存,会消耗掉大量时间在存模型上,GPU好的时候甚至比训练时间还长。。。

Read more »

简单步骤

  1. 确定Device,看是否有可利用的GPU:device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

  2. 正常定义并实例化模型和Dataloader

  3. 如果检测到的GPU多于一块,将模型并行化:

Read more »

开篇名义,先把普遍的神经网络层的排布顺序展示出来:

1
2
3
4
Enter: Convlution -> Batch Normalization -> Relu -> Max Pool
Middle: Convlution -> Batch Normalization -> Relu
Middle Complicated: -> CONV/FC -> BatchNorm -> ReLu(or other activation) -> Dropout -> CONV/FC ->
Tail: Max Pool -> View -> (Dropout) -> Fc
Read more »

Python namedtuple使用详解

本文转载至:链接

namedtuple是继承自tuple的子类。namedtuple创建一个和tuple类似的对象,而且对象拥有可访问的属性。

下面看个例子:

Read more »

主要方向

  1. 自行组装一台GPU Linux机器。网上许多教程都是教人如何DIY的。这种方案的优点是不但便宜不少,而且还可以从中学习到很多相关知识,如果您有这个需求,并且也有时间、想学习相关内容,或是对价格比较敏感,DIY是一个相对较好的选择。但是缺点也是存在的。首先是售后服务问题,一旦机器出了故障,维修可能会相对比较麻烦,尤其是在您自身也对此不是很专业的情况下。另外是自行DIY可能会产生搭配不合理的问题,比如选用了散热性能不足的器材、最大功率不足的电源等,这些都会为您未来的使用带来隐患。

Read more »

先交代一下背景:一个机器学习代码的检验需要用到lab之前写好的仿真代码,现在需要将这两份代码结合在一起工作,并且把机器学习完成的任务部分的matlab代码用Python代码代替。

最开始想出来的可能方法大致的有如下三个:

Read more »

机器学习中,有时候需要自己生成含有n个channel、size相同的输入数据。这个时候就需要进行numpy的拼接操作了。

先看示例代码:

1
2
3
4
5
6
7
def gen_input(Vn, Vp, nx1, ny1, net_charge):
net_charge = np.array(net_charge)[np.newaxis, :]
border_cond = np.zeros((1, int(ny1), int(nx1)))
border_cond[0, :, 0] = Vn
border_cond[0, :, -1] = Vp
model_input = np.concatenate((net_charge, border_cond), axis=0)
return model_input[np.newaxis, :]

上面的net_charge和border_cond即为需要进行拼接操作的两个matrix,分别使用了[np.newaxis,:]和初始化的时候就多生成一维的方法,最后使用np.concatenate进行拼接。

Read more »

之前提到过利用python-graphviz进行自动网络可视化,尽管其较为适合展示,但是Tensorboard生成的网络结构图有着可折叠、便于调试的优点,那Pytorch可以使用这项功能吗?

答案是肯定的,tensorboardx提供了这项支持。

Read more »

辛苦而刺激的一周。

上周完成了深度学习模型的搭建之后,本周开始了复杂而艰难的测试工作。之所以如此复杂,是因为模型验证只能建立在连续模拟得出的曲线之上。而想要得到足够的验证数据,必须把之前学长所搭建的MATLAB仿真代码和自己基于Python的深度学习代码进行结合。大致的方法有三:

Read more »

有时Ubuntu系统自带的apt-get会让人头疼的什么包都安装失败,提示无法找到相应包。

原因:

apt-get命令太久未更新,或是服务器自带版本过低,需要手动更新并升级相应的库。

解决方案:

1
2
sudo apt-get update
sudo apt-get upgrade
0%