Learning Diary for Week Eight

一、 路况预测竞赛学习情况

为了进行比赛,这周学习了python有关切片的内容以及pytorch的基本知识。

1.python切片
比如,一个list如下:

 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

取前3个元素,应该怎么做?

方法一:

print([L[0], L[1], L[2]])
#运行结果:['Michael', 'Sarah', 'Tracy']

取前N个元素呢?

r = []
n = 3
for i in range(n):
r.append(L[i])
print(r)
#运行结果:['Michael', 'Sarah', 'Tracy']

以上这种方法比较繁琐,对于指定索引范围的操作没有办法,因此python提供了切片(Slice)操作符,能大大简化这种操作。

方法二:
取前3个元素,用一行代码就可以完成切片

print(L[0:3])
#运行结果:['Michael', 'Sarah', 'Tracy']

其中,L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3,如果第一个索引为0,还可以省略。

也可以从索引1开始,取出2个元素:

print(L[1:3])
#运行结果['Sarah', 'Tracy']

且python还支持倒数切片,倒数的第一个元素是-1:

print(L[-2:])
#运行结果:['Bob', 'Jack']
print(L[-2:-1])
#运行结果:['Bob']

前10个数,每两个取一个

print(L[:10:2])
#运行结果:[0, 2, 4, 6, 8]

tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple;字符串也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串。

练习:利用切片操作,实现一个trim()函数,去除字符串首尾的空格

def trim(s):while (s[:1] == ' '):s = s[1:]while (s[-1:] == ' '):s = s[:-1]return sif trim('hello  ') != 'hello':print('default')
elif trim('  hello') != 'hello':print('default')
elif trim('  hello  ') != 'hello':print('default')
elif trim('  hello  world  ') != 'hello  world':print('default')
elif trim('') != '':print('default')
elif trim('    ') != '':print('default')
else:print('victory')

2.pytorch入门学习
pytorch:动态计算图
Tensorflow:静态计算图
Pytorch代码通俗易懂,接近python原生代码

什么是pytorch?
是一个基于python的科学计算器,特点:

  • 类似于NumPy,但是可以使用GPU
  • 可以定义深度学习模型,灵活地进行深度学习的训练和使用

Pytorch可以做什么?
可以定义模型的architecture,参数的调整(利用训练数据调整参数)。

Pytorch的应用
图像分类、Object Detection、image style transfer、cycleGAN、image captioning、情感分析、question answering、chatbot、预训练语言模型等

2.1 variable变量
要把一个tensor作为神经网络的参数,首先就要变成variable类型,因为variable作为节点可以反向传递,也就是v_out计算后会改变原始variable的值,而tensor不可以:

tensor=torch.FloatTensor([[1,2],[3,4]])
variable=Variable(tensor,requires_grad=True)
print tensor
print variable
t_out=torch.mean(tensor*tensor)
v_out=torch.mean(variable*variable)
v_out.backward()
print(variable.gard)
print(variable.data)
print(variable.data.numpy)

2.2 激励函数(Activation)
y=AF(Wx)
AF()即激励函数,用于解决现实生活中不能用线性方程解决的问题,激励函数必须可微分。

激励函数的类型:relu、signmoid、tanh、softplus

下面是relu函数的实现代码,这里涉及到画图pyplot:

import torch
import torch.nn.funcational as F
from torch.autograd import Variable
import matplotlib.pyplot as plt
x=torch.linspace(-5,5,200)
x=Variable(x)
x_np=x.data.numpy()
y_relu=F.relu(x).data.numpy()
plt.figure(1,figsize=(8,6))
plt.subplot(221)
plt.plot(x_np,y_relu,c='red',lable='relu'
plt.ylim((-1,5))
plt.legend(loc='best')
plt.show()

2.3 关系拟合
编写一个动态拟合点的过程:

import torch
import torch.nn.funcational as F
from torch.autograd import Variable
import matplotlib.pyplot as pltx=torch.unsqueeze(torch,linspace(-1,1,100),dim=1)#unsqueeze的作用是把数据变2维
y=x.pow(2)+0.2*torch.rand(x.size())
x,y=Variable(x),Variable(y)
plt.scatter(x.data.numpy(),y.data.numpy())
#搭建layer
class Net(torch.nn.Module):#继承Module模块功能def __init__(self):super(Net,self).__init__(n_feature,n_hidden,n_output)self.hidden=torch.nn.Linear(n_feature,n_hidden)#定义hidden层self.predict=torch.nn.Linear(n_hidden,n_output)#定义预测层def forward(self,x)#前向传递过程x=F.relu(self.hidden(x))#使用激励函数,用hidden处理xx=self.predict(x)return x
net=Net(1,10,1)
print(net)
#优化参数
optimizer=torch.optim.SGD(net.parameters(),lr=0.5)#lr是学习效率
loss_func=torch.nn.MSELoss()#计算误差,均方差
for t in range(100)prediction=net(x)loss=loss_func(prediction,y)#预测值在前,真实值在后optimizer.zero_grad()#将梯度降为0loss.backward()#反向传递optimizer.step()#以学习效率优化梯度

二、第八届共享杯大赛进展

下载了1961——2010黑河流域平均湿度数据、2008年黑河流域气象站观测数据(目的是获得日照数据)、1961——2010黑河流域气温数据、2012年黑河流域太阳辐射数据。

并利用获取的气象站点数据和黑河边界数据制作了气象站点分布图:
根据前人的文献总结出了进行研究的思维导图:

三、CA模型学习进展

CA模型是我自己感兴趣的问题,我想利用CA模型对土地利用情况进行模拟与预测,初定研究区为山东省,以下是我通过阅读文献所了解到的有关该方向的概述:

土地利用/覆盖变化模型(LUCC)

LUCC数量预测模型:

  • 马尔柯夫模型:要求因素的变化特征具有平稳性,因此存在一定局限性
  • 系统动力学模型:缺乏空间因素的处理能力
  • 灰色预测模型:不能综合考虑多个因素的影响,使得应用偏短期预测 回归分析模型:主观地确定其结构和参数,成效不明显
  • 人工神经网络模型:对于确定模型参数及结构较简便易行,消除了常规模拟方法带来的弊端

LUCC空间预测模型:

  • 元胞自动机:可模拟系统的动态过程,也能预测系统的长期趋势 CENTURY模型:要求输入有效且有代表性的参数才能获得较好的结果
  • CLUS-S模型:侧重于模拟土地利用变化的空间分布格局变化之前需要用其他数理方法获取数量变化情况
  • GEOMO模型:侧重于预测“已开发土地”与“未开发土地”之间的变化 IMAGE模型:尝试构造全球变化模型的框架

扩展式CA模型

  • CA—Markov:综合了CA模拟空间动态变化的能力和Markov长期预测的优点,把土地利用各地类之间的转移概率当做恒定值来处理
  • Logistic—CA:通过改变CA的转换规则,进而CA可以有效模拟土地利用动态变化
  • Logistic—CA—Markov:CA—Markov把土地利用各地类之间的转移概率当做恒定值来处理,没有考虑到自然和社会经济的非线性驱动因素,加入能够有效综合非线性驱动因素的Logistic定量分析方法,进而改变CA转换规则进行模拟。

土地利用空间格局变化分析指标

  • 转移矩阵
  • 土地利用程度
  • 空间中心迁移模型

土地利用影响因素

  • 自然:DEM、坡度
  • 社会经济:人口、GDP
  • 可达性因子:公路、铁路、城镇、水系

CA转换规则的获取方法
基于多准则判断(MCE)、基于Logistic回归的方法、基于5个因子的SLEUTH模型方法、基于主成分分析方法、神经网络

IDRISI软件可提供CA-Markov模块

2020.10.30 徐源

Learning Diary for Week Eight相关推荐

  1. Learning diary

    1.Unpack the tuple 2.split the string through "str" str.split(str="", num=string ...

  2. Learning Diary for Python

  3. python学习Day-8

    Learning Diary for Python - 8 一.集合 1.认识集合 集合为容器型数据(set) 将{}作为容器的标志,多个元素用:隔开{1,2,3-} 可变的(支持增删改查) 无序的( ...

  4. learning to rank_排序

    20210415 ndcg 一个正确结果位置的随机结果是0.45左右 20210412 考察产业匹配MRR评估指标的随机情况是什么样的 随机情况下会是什么样的 可以根据ndcg的值来看是否随机 202 ...

  5. 【Learning Notes】线性链条件随机场(CRF)原理及实现

    1. 概述 条件随机场(Conditional Random Field, CRF)是概率图模型(Probabilistic Graphical Model)与区分性分类( Discriminativ ...

  6. 几何深度学习(Geometric Deep Learning)技术

    几何深度学习(Geometric Deep Learning)技术 几何深度学习综述 从论文Geometric Deep Learning: Grids, Groups, Graphs, Geodes ...

  7. 深度学习编译器综述The Deep Learning Compiler

    深度学习编译器综述The Deep Learning Compiler The Deep Learning Compiler: A Comprehensive Survey 参考文献: https:/ ...

  8. 全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样 ...

  9. 全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 3.优化计算图 计算图是在DL框架中表示程序的常 ...

最新文章

  1. 如何在awk中引用外部变量
  2. python小项目案例-Python小项目:快速开发出一个简单的学生管理系统
  3. Bootstrap组件_导航条(默认样式的导航条,品牌)
  4. MySQL 创建联结
  5. css垂直居中怎么设置?文字上下居中和图片垂直居中
  6. 培华学院2012届计算机专业多少人,西安培华学院学子在中国大学生计算机设计大赛中取得多个国奖...
  7. 数据结构面试常见问题总结
  8. BFS算法解题套路框架(附习题)
  9. 阿里Java技术架构师教你如何写好你的技术简历,附简历模板、学习资料
  10. 数位板使用技巧、个人数位板见解、插画教程...
  11. Loongson_灵珑9S2A 逸珑8089 3B1500龙芯电脑的使用感触
  12. 女人50万年的进化(暴经典)
  13. 1.大量数据导出Excel 之 多重影分身之术
  14. OSPF特殊区域及其他特性
  15. 应用现有EXCEL工作簿实现简单人事管理
  16. 安卓日志系统初探(带你了解Android日志系统的概貌)
  17. MacOS Monterey 12.1 (21C52) OC 0.7.6 / Cl 5142 / PE 三分区原版黑苹果镜像
  18. HTB打靶(Active Directory 101 Mantis)
  19. 功能室计算机室教学计划,计算机室教学计划
  20. might和could的区别用法_情态动词may与might用法

热门文章

  1. 一个软件项目开始应该怎么入手分析,搭建
  2. C++:去掉字符串首尾空格
  3. 《泰坦尼克号》未公映结局曝光
  4. 《邱岳的产品实战》学习笔记:第8周
  5. centos7.x搭建rocketmq-4.9.3单机环境
  6. 《说文解字》与程序设计
  7. 宝塔shell计划任务功能内需要填写什么内容
  8. 如何制作性能和效果平衡的UE项目——建模软件篇
  9. Oracle 数据库设置密码永不过期
  10. 嵌入式GUI开发:简易版王者荣耀登录器