“人造太阳”计划

Pytorch Torch.utils.data.Sampler

泪湿孤枕 提交于 2020-02-25 22:45:25
Data Loading Order and Sampler For iterable-style datasets , data loading order is entirely controlled by the user-defined iterable. This allows easier implementations of chunk-reading and dynamic batch size (e.g., by yielding a batched sample at each time). The rest of this section concerns the case with map-style datasets . torch.utils.data.Sampler classes are used to specify the sequence of indices/keys used in data loading. They represent iterable objects over the indices to datasets. E.g., in the common case with stochastic gradient decent (SGD), a Sampler could randomly permute a list of

Python的生成器和迭代器之间的区别

十年热恋 提交于 2020-02-25 21:03:43
迭代器和生成器有什么区别? 有关何时使用每种情况的一些示例会有所帮助。 #1楼 迭代器: 迭代器是使用 next() 方法获取序列的下一个值的对象。 发电机: 生成器是使用 yield 方法生成或生成值序列的函数。 生成器函数(如以下示例中的ex: foo() 函数)返回的生成器对象(如以下示例中的ex: f next() 上的每个 next() 方法调用,都会按顺序生成下一个值。 调用生成器函数时,它甚至不开始执行该函数就返回生成器对象。 首次调用 next() 方法时,该函数开始执行直到到达yield语句,该语句返回产生的值。 收益跟踪(即记住上一次执行)。 第二个 next() 调用从上一个值继续。 下面的示例演示了yield和生成器对象上的next方法的调用之间的相互作用。 >>> def foo(): ... print "begin" ... for i in range(3): ... print "before yield", i ... yield i ... print "after yield", i ... print "end" ... >>> f = foo() >>> f.next() begin before yield 0 # Control is in for loop 0 >>> f.next() after yield 0 before

[C++] epoll server实例

时光毁灭记忆、已成空白 提交于 2020-02-25 19:56:43
// IO多路复用,事件驱动+非阻塞,实现一个线程完成对多个fd的监控和响应,提升CPU利用率 // epoll优点: // 1.select需要每次调用select时拷贝fd,epoll_ctl拷贝一次,epoll_wait就不需要重复拷贝 // 2.不需要像select遍历fd做检查,就绪的会被加入就绪list,遍历list完成处理 // 3.没有最大连接限制,与最大文件数目相关:cat /proc/sys/fs/file-max,与内存相关 // epoll实现相关: // 1.epoll_ctl,将fd的event使用RB tree保存,读写O(logN); // 2.一旦有event,内核负责添加到rdlist链表 // 3.epoll_wait检查链表看是否有事件,并进行处理 // Ref // https://www.cnblogs.com/lojunren/p/3856290.html // http://blog.chinaunix.net/uid-28541347-id-4273856.html // Question: // 是否需要每个event一个实例? #include <cstdlib> /* exit() */ #include <cstdio> /* perror(): 打印信息+发生错误的原因,可用于定位。 */ #include

文本分类实战

点点圈 提交于 2020-02-25 19:19:35
此处还用到torchtext,针对NLP的文本预处理功能模块。 1、读取数据 数据源: 斯坦福的IMDb数据集(Stanford’s Large Movie Review Dataset) def read_imdb ( folder = 'train' , data_root = "./dataset/aclImdb_v1/aclImdb" ) : data = [ ] for label in [ 'pos' , 'neg' ] : folder_name = os . path . join ( data_root , folder , label ) for file in tqdm ( os . listdir ( folder_name ) ) : with open ( os . path . join ( folder_name , file ) , 'rb' ) as f : review = f . read ( ) . decode ( 'utf-8' ) . replace ( '\n' , '' ) . lower ( ) data . append ( [ review , 1 if label == 'pos' else 0 ] ) random . shuffle ( data ) return data DATA_ROOT = "/home

动手学:深度学习Task6

99封情书 提交于 2020-02-25 19:12:31
批量归一化(BatchNormalization) 对输入的标准化(浅层模型) 处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。 标准化处理输入数据使各个特征的分布相近 批量归一化(深度模型) 利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。 1.对全连接层做批量归一化 位置:全连接层中的仿射变换和激活函数之间。 全连接: x = W u + b o u t p u t = ϕ ( x ) \boldsymbol{x} = \boldsymbol{W\boldsymbol{u} + \boldsymbol{b}} \\ output =\phi(\boldsymbol{x}) x = W u + b o u t p u t = ϕ ( x ) 批量归一化: o u t p u t = ϕ ( BN ( x ) ) output=\phi(\text{BN}(\boldsymbol{x})) o u t p u t = ϕ ( BN ( x ) ) y ( i ) = BN ( x ( i ) ) \boldsymbol{y}^{(i)} = \text{BN}(\boldsymbol{x}^{(i)}) y ( i ) = BN ( x ( i ) ) μ B ← 1 m ∑ i = 1 m x ( i ) ,

C++STL中map容器的说明和使用技巧(杂谈)

半腔热情 提交于 2020-02-25 14:44:53
1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 2、map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。 快速插入Key - Value 记录。 快速删除记录 根据Key 修改value记录。 遍历所有记录。 3、使用map 使用map得包含map类所在的头文件 #include <map> //注意,STL头文件没有扩展名.h map对象是模板类,需要关键字和存储对象两个模板参数: std:map<int, string> personnel; 这样就定义了一个用int作为索引,并拥有相关联的指向string的指针. 为了使用方便,可以对模板类进行一下类型定义, typedef map<int, CString> UDT_MAP_INT_CSTRING; UDT_MAP_INT_CSTRING enumMap; 4、在map中插入元素 改变map中的条目非常简单,因为map类已经对[]操作符进行了重载 enumMap[1] = "One"; enumMap[2] =

查找最小的k个元素

萝らか妹 提交于 2020-02-25 07:59:29
算法中使用到了堆,即stl中的multiset。 #include <iostream> #include <vector> #include <set> using namespace std; typedef multiset<int, greater<int>> IntHeap; void FindKLeastNumbers( const vector<int>& data, IntHeap& leastNumbers, unsigned int k) { leastNumbers.clear(); if (k==0||data.size()<k) { return; } vector<int>::const_iterator iter=data.begin(); for (; iter!=data.end(); ++iter) { if (leastNumbers.size()<k) { leastNumbers.insert(*iter); } else { IntHeap::iterator iterFirst=leastNumbers.begin(); if (*iter<*iterFirst) { leastNumbers.erase(iterFirst); leastNumbers.insert(*iter); } } } } int main() {

图像分类案例2

て烟熏妆下的殇ゞ 提交于 2020-02-24 19:39:28
# 在本节notebook中,使用后续设置的参数在完整训练集上训练模型,大致需要40-50分钟 # 请大家合理安排GPU时长,尽量只在训练时切换到GPU资源 # 也可以在Kaggle上访问本节notebook: # https://www.kaggle.com/boyuai/boyu-d2l-dog-breed-identification-imagenet-dogs import torch import torch . nn as nn import torch . optim as optim import torchvision import torchvision . transforms as transforms import torchvision . models as models import os import shutil import time import pandas as pd import random # 设置随机数种子 random . seed ( 0 ) torch . manual_seed ( 0 ) torch . cuda . manual_seed ( 0 ) data_dir = '/home/kesci/input/Kaggle_Dog6357/dog-breed-identification' # 数据集目录 label

动手学深度学习PyTorch版——Task06学习笔记

北战南征 提交于 2020-02-23 22:57:02
批量归一化和残差网络 批量归一化 从零开始 import time import torch from torch import nn , optim import torch . nn . functional as F import torchvision import sys sys . path . append ( "/home/kesci/input/" ) import d2lzh1981 as d2l device = torch . device ( 'cuda' if torch . cuda . is_available ( ) else 'cpu' ) def batch_norm ( is_training , X , gamma , beta , moving_mean , moving_var , eps , momentum ) : # 判断当前模式是训练模式还是预测模式 if not is_training : # 如果是在预测模式下,直接使用传入的移动平均所得的均值和方差 X_hat = ( X - moving_mean ) / torch . sqrt ( moving_var + eps ) else : assert len ( X . shape ) in ( 2 , 4 ) if len ( X . shape ) == 2 : #

阿里巴巴笔试题选解

心已入冬 提交于 2020-02-23 22:34:17
阿里巴巴笔试题选解 -- 9月22日,阿里巴巴北邮站 小题:(部分题目) 1 、有三个结点的,可以构成多少个种叉树? 2 、一副牌 52 张 ( 去掉大小王 ) ,从中抽取两张牌,一红一黑的概率是多少? 编程题: 3 、 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。情特别注意优化时间复杂度的常数。 4 、 已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,是的组成的三元组距离最小。三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为: Distance = max(|a[ I ] – b[ j ]|, |a[ I ] – c[ k ]|, |b[ j ] – c[ k ]|) 请设计一个求最小三元组距离的最优算法,并分析时间复杂度。 5 、 在黑板上写下50个数字:1至50.在接下来的49轮操作中,每次做如下动作:选取两个黑板上的数字a和b,擦去,在黑板上写|b - a|。请问最后一次动作之后剩下数字可能是什么?为什么? 题解: (题解非官方,仅供参考,有错误的地方望指正!谢谢) 1 、有三个结点的,可以构成多少个种树形结构? 解:应该是5种; 2、一副牌 52 张 ( 去掉大小王 ) ,从中抽取两张牌,一红一黑的概率是多少? 考察概率论知识 解法一: