“人造太阳”计划

C++之STL迭代器

别来无恙 提交于 2020-02-17 11:26:11
迭代器是一种检查容器内元素并遍历元素的数据类型。可以替代下标访问vector对象的元素。 每种容器类型都定义了自己的迭代器类型,如 vector: vector< int>::iterator iter; 这符语句定义了一个名为 iter 的变量,它的数据类型是 vector<int> 定义的 iterator 类型。每个标准库容器类型都定义了一个名为 iterator 的成员,这里的 iterator 与迭代器实际类型的含义相同。 begin 和 end 操作 每种容器都定义了一对命名为 begin 和 end 的函数,用于返回迭代器。如果容器中有元素的话,由 begin 返回的迭代器指向第一个元素: vector< int>::iterator iter = ivec.begin(); 上述语句把 iter 初始化为由名为 vector 操作返回的值。假设 vector 不空,初始化后,iter 即指该元素为 ivec[0]。由 end 操作返回的迭代器指向 vector 的“末端元素的下一个”。表明它指向了一个不存在的元素。如果 vector 为空,begin 返回的迭代器与 end 返回的迭代器相同。由 end 操作返回的迭代器并不指向 vector 中任何实际的元素,相反,它只是起一个哨兵(sentinel)的作用,表示我们已处理完 vector 中所有元素。 【备注

3.8 多层感知机

☆樱花仙子☆ 提交于 2020-02-16 11:37:28
3.8.1 从零开始实现 3.8.1.1 获取和读取数据 batch_size = 256 train_iter , test_iter = d2l . load_data_fashion_mnist ( batch_size ) 3.8.1.2 定义模型参数 Mxnet num_inputs , num_outputs , num_hiddens = 784 , 10 , 256 W1 = nd . random . normal ( scale = 0.01 , shape = ( num_inputs , num_hiddens ) ) b1 = nd . zeros ( num_hiddens ) W2 = nd . random . normal ( scale = 0.01 , shape = ( num_hiddens , num_outputs ) ) b2 = nd . zeros ( num_outputs ) params = [ W1 , b1 , W2 , b2 ] for param in params : param . attach_grad ( ) Pytorch num_inputs , num_outputs , num_hiddens = 784 , 10 , 256 W1 = torch . tensor ( np . random .

Python—迭代器和生成器

送分小仙女□ 提交于 2020-02-16 01:23:00
楔子 假如我现在有一个列表l=['a','b','c','d','e'],我想取列表中的内容,有几种方式? 首先,我可以通过索引取值l[0],其次我们是不是还可以用for循环来取值呀? 你有没有仔细思考过,用索引取值和for循环取值是有着微妙区别的。 如果用索引取值,你可以取到任意位置的值,前提是你要知道这个值在什么位置。 如果用for循环来取值,我们把每一个值都取到,不需要关心每一个值的位置,因为只能顺序的取值,并不能跳过任何一个直接去取其他位置的值。 但你有没有想过,我们为什么可以使用for循环来取值? for循环内部是怎么工作的呢? 迭代器 python中的for循环 要了解python中的for循环是怎么回事儿,咱们还是要从代码的角度出发。 首先,我们对一个列表进行for循环。 for i in [1,2,3,4]: print(i) 上面这段代码肯定是没有问题的,但是我们换一种情况,来循环一个数字1234试试 for i in 1234 print(i) 结果: Traceback (most recent call last): File "test.py", line 4, in <module> for i in 1234: TypeError: 'int' object is not iterable 看,报错了!报了什么错呢?“TypeError: 'int'

Pytorch深度学习(2) -- RNN及其进阶模型实现 ( GRU LSTM Deep-Rnn Bi-Rnn)

夙愿已清 提交于 2020-02-16 01:04:31
Pytorch深度学习(2) -- RNN及其进阶模型实现 0 预测训练函数 1.RNN实现 RNN小结 2.GRU实现 GRU小结 3.LSTM实现 LSTM小结 4.Deep-RNN 加入参数num_layers=2 5.Bi-Rnn实现 加入参数bidirectional=True 0 预测训练函数 def train_and_predict_rnn ( rnn , get_params , init_rnn_state , num_hiddens , vocab_size , device , corpus_indices , idx_to_char , char_to_idx , is_random_iter , num_epochs , num_steps , lr , clipping_theta , batch_size , pred_period , pred_len , prefixes ) : if is_random_iter : data_iter_fn = d2l . data_iter_random else : data_iter_fn = d2l . data_iter_consecutive params = get_params ( ) loss = nn . CrossEntropyLoss ( ) for epoch in range (

LinearRegression

孤街醉人 提交于 2020-02-15 16:10:07
线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现 线性回归的基本要素 模型 为了简单起见,这里我们假设价格只取决于房屋状况的两个因素,即面积(平方米)和房龄(年)。接下来我们希望探索价格与这两个因素的具体关系。线性回归假设输出与各个输入之间是线性关系: p r i c e = w a r e a ⋅ a r e a + w a g e ⋅ a g e + b price=w_{area}⋅area+w_{age}⋅age+b p r i c e = w a r e a ​ ⋅ a r e a + w a g e ​ ⋅ a g e + b 数据集 我们通常收集一系列的真实数据,例如多栋房屋的真实售出价格和它们对应的面积和房龄。我们希望在这个数据上面寻找模型参数来使模型的预测价格与真实价格的误差最小。在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征(feature)。特征用来表征样本的特点。 损失函数 1、 M A E / L 1 + M S E / L 2 MAE / L1 + MSE / L2 M A E / L 1 + M S E / L

Pytorch学习笔记 Task02

混江龙づ霸主 提交于 2020-02-15 11:19:28
第一部分:文本预处理 文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤: 读入文本 分词 建立字典,将每个词映射到一个唯一的索引(index) 将文本从词的序列转换为索引的序列,方便输入模型 #读入文本 import collections import re def read_time_machine ( ) : with open ( '/home/kesci/input/timemachine7163/timemachine.txt' , 'r' ) as f : lines = [ re . sub ( '[^a-z]+' , ' ' , line . strip ( ) . lower ( ) ) for line in f ] return lines lines = read_time_machine ( ) print ( '# sentences %d' % len ( lines ) ) #分词: def tokenize ( sentences , token = 'word' ) : """Split sentences into word or char tokens""" if token == 'word' : return [ sentence . split ( ' ' ) for

deeplearning_class1:线性回归&softmax与分类模型&多层感知机

时光总嘲笑我的痴心妄想 提交于 2020-02-15 11:18:36
1.线性回归 线性回归的基本公式是: Y = W X + b Y=WX+b Y = W X + b 在计算线性回归中,我们需要求解的就是误差最小时的线性回归方程,为此,需要了解 损失函数 。这里我们以差平方来表示误差,有 l ( i ) ( w , b ) = 1 2 ( y ^ − y ( i ) ) 2 l^{(i)}(w,b)=\frac{1}{2}(\hat{y}-y^{(i)})^2 l ( i ) ( w , b ) = 2 1 ​ ( y ^ ​ − y ( i ) ) 2 损失函数 以平均误差和来表示: L ( w , b ) = 1 n ∑ i = 1 n l ( i ) ( w , b ) L(w,b) = \frac{1}{n}\sum^{n}_{i=1}l^{(i)}(w,b) L ( w , b ) = n 1 ​ i = 1 ∑ n ​ l ( i ) ( w , b ) 所谓线性回归模型的训练,就是指训练以数据,得到误差最小的线性回归方程,通俗的讲,就是一次次的向线性回归模型中带入训练集,通过计算误差,来调整线性回归模型的 w w w 和 b b b 。 这里,我们采用 随机梯度下降 的方法来调整 w w w , b b b : ( w , b ) ← ( w , b ) − η β ∑ i ∈ β ∂ ( w , b ) l ( i ) ( w ,

Datawhale:动手深度学习第一次打卡!

不羁的心 提交于 2020-02-15 09:46:34
Datawhale:动手深度学习第一次打卡! 这几天将视频中的代码重新敲了一边,感觉自己学到了不少东西: 编程一定要多练呀!!!(叫破喉咙) 要多看看一些写的好的代码,不然你就不知道自己代码写的有多辣眼睛 学习了一些python的语法点已经一些小技巧 又再次复习了以下知识点 Task01: 线性回归 import torch from torch import nn import numpy as np torch . manual_seed ( 1 ) print ( torch . __version__ ) torch . set_default_tensor_type ( 'torch.FloatTensor' ) # 生成数据 num_inputs = 2 num_examples = 1000 true_w = [ 2 , - 3.4 ] true_b = 4.2 features = torch . tensor ( np . random . normal ( 0 , 1 , ( num_examples , num_inputs ) ) , dtype = torch . float ) labels = true_w [ 0 ] * features [ : , 0 ] + true_w [ 1 ] * features [ : , 1 ] + true_b

DataWhale组队打卡学习营task02-3

北城余情 提交于 2020-02-15 05:22:47
循环神经网络 从零开始实现循环神经网络 我们先尝试从零开始实现一个基于字符级循环神经网络的语言模型,这里我们使用周杰伦的歌词作为语料,首先我们读入数据: import torch import torch . nn as nn import time import math import sys sys . path . append ( "/home/kesci/input" ) import d2l_jay9460 as d2l ( corpus_indices , char_to_idx , idx_to_char , vocab_size ) = d2l . load_data_jay_lyrics ( ) device = torch . device ( 'cuda' if torch . cuda . is_available ( ) else 'cpu' ) one-hot向量 我们需要将字符表示成向量,这里采用one-hot向量。假设词典大小是N,每次字符对应一个从0到N-1的唯一的索引,则该字符的向量是一个长度为N的向量,若字符的索引是i,则该向量的第i个位置为1,其他位置为0。下面分别展示了索引为0和2的one-hot向量,向量长度等于词典大小。 def one_hot ( x , n_class , dtype = torch . float32 ) :

动手深度学习task2——softmax

假如想象 提交于 2020-02-14 20:22:05
softmax与分类模型 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXrlQNpD-1581673070121)(attachment:image.png)] torchvision包主要用来构建计算机视觉模型。 1.torchvision.datasets: 一些加载数据的函数及常用的数据集接口 2.torchvision.models:包含常用的模型结构(包括预训练模型),例如AlexNet、VGG、ResNet等 3.torchvision.transforms:常见的图片变换,例如裁剪、旋转等 4.torchvision.utils:其他的一些有用的方法 # 获取数据集 import torch import torchvision import torchvision . transforms as transforms import matplotlib . pyplot as plt import time import sys sys . path . append ( ".." ) 获取Fashion-MNIST训练集和读取数据 我们通过torchvision的torchvision.datasets来下载这个数据集。第一次调用时会自动从网上获取数据。我们通过参数train来指定获取训练数据集或测试数据集。