自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

The Thinker

Life is short, you need Python!

  • 博客(108)
  • 收藏
  • 关注

原创 Python源码剖析(五)列表对象

bilibili视频讲解:https://space.bilibili.com/431392724b站用户名:平凡的久月1. PyListObject变长对象(数据长度在定义时是不知道的,只能在创建时才能确定)与字符串对象不同的是支持插入删除操作,运行时动态地调整其维护的内存和元素与C++中的Vector(动态顺序表,连续的空间)很相似,与list(带头节点的双向循环链表)反而不像可变对象(改变值内存地址不会发生改变)1.1 定义// Include/listobject.h#ifndef

2022-01-20 18:06:48 1177

原创 Python源码剖析(四)字符串对象

1. PyBytesObject变长对象(数据长度在定义时是不知道的,只能在创建时才能确定)不可变对象(改变值内存地址会发生改变)1.1 定义// Include/bytesobject.h#ifndef Py_LIMITED_APItypedef struct { PyObject_VAR_HEAD Py_hash_t ob_shash; char ob_sval[1]; /* Invariants: * ob_sval contains s

2022-01-18 19:58:58 955

原创 Python源码剖析(三)整数对象 2

2. 整数的创建与运行创建对象的方法:通过Python C API来创建通过设计的类型对象创建实例对象内建对象也是采用这种方法(tp_new\tp_init),但是最终还是会调用为特定内建对象准备的C API那么是不是所有的整型(整数)对象都是采用这种方式呢?类型角度:从 C long int 生成(from String、from float、from Unicode)PyObject?/* Create a new int object from a C long int

2022-01-16 17:06:09 667

原创 Python源码剖析先导知识概述

1. 先导知识列表各位读者可以先自己回顾总结一下这些先导知识,后续会出专门的几期视频对这些知识进行简单地总结。只有明白自己疑惑的点在哪里,才能在Python源码剖析中针对性地找到答案,有所收获...

2022-01-09 19:29:41 187

原创 Python源码剖析(三)整数对象 1

Python3中用LongObject表示整型Number,Python2中用IntObject和LongObject表示整型Number。1. PyLongObject 概述 在Python中没有对象能被完全被声明为一个PyObject,但每一个指向Python的对象的指针均能够被视为一个PyObject* 指针。1.1 Python3中一个整型数字占多少个字节?struct _longobject { PyObject_VAR_HEAD digit ob_digit[1];

2022-01-09 18:39:34 538

原创 Python源码分析(二)对象概述

https://github.com/python/cpython1. Print1.1 修改print函数在Python3中print是函数Python --> bltinmodule.c --> builtin_print() line:1850了解编译python源代码:在PCbuild同目录层次下会生成Lib文件夹,在PCbuild目录下会生成win32文件夹,里面根据你编译的是debug还是release版本,会生成python_d.exe或者python.exe,打开它,

2022-01-07 14:34:40 1158 2

原创 Python中正则表达式

Python RE模块正则表达式中常用的字符有两类:普通字符和11个元字符,元字符表示特定的功能,比如下面的(),被括起来的表达式将作为分组,从表达式左边开始每遇到一个分组的左括号“(”,编号+1。分组表达式作为一个整体,可以后接数量词。表达式中的 | 仅在该组中有效。那么我们想匹配表达式中的 () 字符怎么办呢?通过前缀反斜杠 \ 将特殊字符(元字符)转义成普通字符。 注:在Python的string前面加上‘r’,即告诉编译器不要转义 \, 例如,\n 在raw string中,是两个字符\和n,而不会

2020-09-28 15:14:58 263

原创 判断有向图是否存在环

题目:给定一个字符串判断是否存在环,字符串表示图的有向边,比如:’{(B->C),(->B),(C->A)}’知识储备(拓扑排序)百度百科:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得

2020-09-27 21:35:15 1306

原创 动态规划(二)

上一篇博客讲解了动态规划的定义,这一篇博客主要通过Leetcode上的实例来讲解一下我对动态规划的理解。剑指 Offer 63. 股票的最大利润122. 买卖股票的最佳时机 II123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV309. 最佳买卖股票时机含冷冻期714. 买卖股票的最佳时机含手续费1. 股票的最大利润对于千篇一律的解题思路我就不再赘述了(直接上图)!通过这个实例请你先体会并总结一下动态规划的核心思想! 是不是觉得自己又行了,继续看下一题!2.

2020-09-27 21:23:50 207

原创 动态规划(一)

动态规划(Dynamic programming)与分治法相似,都是通过组合子问题的解来求解原问题。如前所述,分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题(子问题的求解是递归进行的,将其划分为更小的子子问题)。在这种情况下,分治算法会做出许多不必要的工作,它会反复求解那些公共...

2020-09-14 14:37:28 204

原创 强化学习实战二

这篇博客主要讲解强化学习中两种典型的问题:离散动作与连续动作,通过前面的学习我们知道离散动作问题可以用 Q-Learning算法 解决,而连续动作问题可以用 Policy Gradients算法 解决。这篇博客使用的项目环境:MountainCar v0MountainCarContinuous v01. MountainCar v0问题描述:将动力不足的汽车推到山顶...

2020-03-31 16:04:36 1806

原创 Ornstein-Uhlenbeck过程

在强化学习中(如DDPG算法),可能会用到Ornstein-Uhlenbeck(奥恩斯坦-乌伦贝克)过程,即OU过程。这篇博客将从三个角度解释一下OU过程:什么是OU过程?OU过程适用于哪些场景?OU过程的验证实验前言: DDPG论文中使用Ornstein-Uhlenbeck噪声用于探索,为什么不用高斯噪声呢?1. OU过程定义...

2020-03-27 17:19:02 22937 4

原创 强化学习实战一

强化学习实战一

2020-03-24 22:41:48 2200 1

原创 Actor-Critic

Actor-Critic出现的原因:能够适用于连续动作的选取,并且能够进行单步更新。简而言之,就是具备了Q Learning与Policy Gradients的优点。Actor-Critic的特点。Actor-Critic的两个优化版本:DDPG与A3C。DDPG:它吸收了 Actor-Critic 让 Policy gradient 单步更新的精华,而且还吸收让计算机学会玩游戏的 DQN...

2020-03-24 16:29:08 1281

原创 Policy Gradients

https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/Policy Gradients的特点:回合更新,连续动作(与Q Learning不同)Actor-Critic出现的原因:能够适用于连续动作的选取,并且能够进行单步更新。简而言之,就是具备了Q Learning与Policy Grad...

2020-02-28 19:50:16 311

原创 DQN

如何理解DQN中的Q现实与Q估计可以从两个角度进行理解,一、其实是与Q Learning算法中的一样,就是Q现实的计算与转换到下一状态的奖励与处于下一状态的采取最大值动作的Q值有关。二、在DQN中,Q值的计算是由神经网络实现的,Q现实与Q估计是由两个结构相同但参数不同的网络实现的,其中Q估计是时刻更新的,而Q现实使用的是很久以前的参数,是冻结的(其实与Q Learning异曲同工)。这样做的目...

2020-02-28 19:24:20 418

原创 强化学习概述

1. 强化学习分类2. Q Learning算法思想、流程、核心。Q Learning 中的 Q值 表示什么?这里可以理解成基于值的强化学习中的值,不要简单地理解成奖励,因为这不仅仅是奖励,应该是与奖励、初始Q表、alpha相关的。在一个初始化全为0的Q表中,第一个更新的Q值应该是获得奖励的上一个状态,因为这时候会有非零值出现即奖励。Q现实与Q估计怎么理解。Q估计就是根据已有的Q表...

2020-02-28 19:23:56 357

原创 Numpy基础知识

在讲解Numpy之前先看一幅图:可以看出,Numpy核心就是ndarray对象,一个ndarray对象实例由若干个dtype对象实例构成。这就是Numpy精髓所在。1. 数据类型Numpy中数据类型是dtype对象实例,dtype对象描述了对应于数组的固定内存块的解释。基本数据类型有:int16, uint16, float32等等。dtype构造语法:numpy.dtype(objec...

2020-02-22 17:26:27 299

原创 GNN常用数据集之Cora数据集

在学习图神经网络 GNN 之前,必然要了解一些GNN的常用数据集,这篇博客主要以Cora数据集为例介绍GNN的数据集格式与读取方式,并以一个项目实例进行说明。GNN常用数据集:https://linqs.soe.ucsc.edu/data1. Cora数据集介绍Cora数据集下载地址:https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz以...

2020-01-02 09:33:37 29316 15

原创 将numpy array保存为nii格式 itk-snap打不开

将.nii文件读取成numpy array是很常见的,但将分割好的结果numpy array保存为nii格式却也是必须的。现在介绍两种将numpy array保存为nii格式的方法。1. simpleITK## using simpleITK to load and save data.import SimpleITK as sitkitk_img = sitk.ReadImage('....

2020-01-02 09:33:18 3728 9

原创 Pytorch实现DenseNet

本文主要将Pytorch实现的DenseNet用于自己制作的数据集进行图像分类,如果要复现DenseNet在经典数据集如Cifar10上的性能请移步github,另外本文不会涉及详细的论文解读。本文主要讲解如何利用Pytorch实现DenseNet,并且将Pytorch实现的DenseNet用于自己制作的数据集进行图像分类,以并以17 Flowers(17 Category Flower Dat...

2019-12-03 16:00:51 2182 13

原创 torchvision.transforms

上一篇博客讲解了如何组织自己的数据集,这节讲解如何对数据集进行一系列的预处理操作,即Transform。1. torchvision.transforms.Compose(transforms)该API将多个 transform 组合起来对数据进行预处理,其中参数 transforms 是由 transform 构成的列表。现在举一个例子,先看原始图片:接着对这个图片进行预处理操作 To...

2019-12-03 13:44:30 249

原创 torchvision.datasets.ImageFolder

这篇博客讲解了如何自定义一个 Dataset类 返回训练数据与标签,但是对于简单的图像分类任务,并不需要自己定义一个 Dataset类,可以直接调用 torchvision.datasets.ImageFolder 返回训练数据与标签。1. 数据集组织方式既然是调用API,那么你的数据集必然得按照API的要求去组织, torchvision.datasets.ImageFolder 要求数据...

2019-12-03 11:15:04 20808 8

原创 pytorch的模型保存与读取

1. 模型的保存与读取语法pytorch的模型和参数是分开的,可以分别保存或加载模型和参数。1.1 保存与加载模型# 保存模型torch.save(model, 'model.pth')# 加载模型model = torch.load('model.pth')注意:将模型保存成何种格式文件无所谓(比如pkl,pth等)。1.2 保存与加载模型参数# 保存模型参数torch.s...

2019-12-02 09:32:14 2728

原创 pytorch数据预处理——4. Pytorch DataLoader类

本专题主要是解决Pytorch框架下项目的数据预处理工作Table of Contents:     1. HDF5文件简介     2. Python中的_, __, __xx__区别      3. Dataset类   &n...

2019-11-27 09:46:56 1117 1

原创 pytorch数据预处理——3. Pytorch Dataset类

本专题主要是解决Pytorch框架下项目的数据预处理工作Table of Contents:     1. HDF5文件简介     2. Python中的_, __, __xx__ 区别     3. Dataset类   &...

2019-11-27 09:46:47 1692

原创 pytorch数据预处理——2. Python中的_, __, __xx__ 区别

本专题主要是解决Pytorch框架下项目的数据预处理工作Table of Contents:     1. HDF5文件简介     2. Python中的_, __, __xx__区别      3. Dataset类   &n...

2019-11-27 09:46:35 2081

原创 pytorch数据预处理——1. HDF5文件(.h5)

本专题主要是解决Pytorch框架下项目的数据预处理工作Table of Contents:     1. HDF5文件简介     2. Python中的_, __, __xx__ 区别     3. Dataset类   &...

2019-11-27 09:46:21 12829

原创 Tensorflow实现猫狗大战AlexNet

上一篇博客利用TensorFlow实现了VGG16,其中在处理数据的时候将图片数据集转化为TensorFlow专用格式。但是对于某些容量非常庞大、数据量非常多的数据集来说,将其转换为TFRecords格式是一个非常浩大的工程,而且往往由于原始的数据集和转换后的数据集容量过大,使得加载和读取消耗更多的资源,从而引起一些列的问题。今天介绍另一种数据处理方式:图片地址数据集转换为TensorFlow专...

2019-11-12 16:44:44 1261 2

原创 贝叶斯分析之利用逻辑回归对数据进行分类

将逻辑回归应用到莺尾花数据集

2019-11-03 13:36:11 2180

原创 从 tf.stack 讲解参数axis

前面博客中已经对 axis 进行了详细的讲解,这篇博客继续强化一下对 axis 的理解,因为矩阵运算中 axis 是一个非常重要的概念。以 3D 图像为例:上面的 3D 图像的维度是 2 × 2 × 2 ,即每个小立方体(体素)存储着一个灰度值。现在假设有以下三个 3D图像:[[[1, 2], [3, 4]], [[5, 6], [7, 8]]][[[11, 12], [13, 14]...

2019-11-03 13:35:44 1965

原创 Windows下安装Pytorch

Anaconda是一个容易管理虚拟环境的工具,本文主要介绍如何在Anaconda中安装Python+Pytorch(至于如何安装Anaconda请参见这篇博客。1. 生成安装命令进入Pytorch官网,再进入 Get Started目录,选择自己电脑配置生成安装命令(该网页会自动生成你的电脑配置)。2. 创建虚拟环境在Anaconda中创建虚拟环境:conda create -n py...

2019-11-03 13:35:05 524

原创 医学图像

1. 3D坐标转换3D的医学图像(如CT+MRI)往往是根据扫描仪测量的数据转换而来。CT数据的坐标都是基于CT扫描仪的,坐标系(世界坐标系)单位为mm,每个病例的 原点origin 和 体素间距voxel 都不一样。但是在图像坐标系下,原点坐标统一为(0,0,0),体素间距为 1 。那么如何将CT数据坐标转换到图像坐标呢?通过计算CT坐标系下结节位置在原点的相对位置,可以计算出真实坐标系下结...

2019-10-01 09:14:43 801 1

原创 贝叶斯分析之利用线性回归模型理解并预测数据(三)

这一节主要讲多元线性回归模型一元线性回归讨论的是一个因变量与一个自变量的关系,但是在很多例子中,模型可能包含多个自变量。在一元线性回归模型中,我们希望一条直线来解释数据,而在多元线性回归模型中,我们希望找到一个维度为 m 的超平面。以 y=α+0.9∗x1+1.5∗x2y = \alpha + 0.9 * x_1 + 1.5 * x_2y=α+0.9∗x1​+1.5∗x2​ 为例讲解多元线...

2019-10-01 09:14:30 3234

原创 贝叶斯分析之利用线性回归模型理解并预测数据(二)

这一节主要讲分层线性回归与多项式回归模型1. 分层线性回归先了解一下什么是分层模型?以抛硬币问题为例,后验 yyy 服从伯努利分布,先验 θ\thetaθ 服从Beta分布,那么Beta分布的两个参数 α,β\alpha, \betaα,β 是怎么来的呢?如果给予 α,β\alpha, \betaα,β 一个新的分布,那么就称这个新的分布为超先验(即更高层的先验)。可以用如下图进行表示:...

2019-10-01 09:14:04 1959 2

原创 贝叶斯分析之利用线性回归模型理解并预测数据(一)

问题:利用给定的数据建立 y 与 x 之间的线性模型 y=α+βxy=\alpha+\beta xy=α+βx ?1. 构造出数据集假设一个线性模型: y=2.5+0.9∗xy=2.5+ 0.9 * xy=2.5+0.9∗x,在生成数据时加一个扰动项(eps_real)np.random.seed(1)N = 100alfa_real = 2.5beta_real = 0.9eps...

2019-10-01 09:13:49 4006 3

原创 TensorFlow内置交叉熵损失函数

今天讲解Tensorflow内置4中交叉熵损失函数:sigmoid_cross_entropy_with_logitsaaaaaaaaa1. sigmoid_cross_entropy_with_logitstf.nn.sigmoid_cross_entropy_with_logits( _sentinel=None, labels=None, logit...

2019-10-01 09:13:30 674

原创 利用os模块编写一个能实现dir -l输出的程序

在Linux下命令ls和dir都有相同的功能:打印当前文件夹目录。注:ls 是Linux的原装命令,dir是原来dos的命令,Linux选择兼容了此个dos命令,所以dir和ls在功能上是一样的。1. ls命令...

2019-09-01 09:29:34 4073 2

原创 Neural Architecture Search: A Survey

论文地址:https://arxiv.org/abs/1808.05377v3论文主要是介绍了Neural Architecture Search(NAS)近几年的发展,在介绍NAS之前我想抛出一个问题:为什么要研究AutoML(NAS可以看做AutoML的一个子领域)?回到论文,为什么要进行NAS呢?因为专家对网络架构的设计是一个耗时(time-consuming )且易错(error-pr...

2019-09-01 09:29:12 2954

原创 如何读取NIFTI格式图像(.nii文件)

在医学图像处理中,我们经常使用一种NIFTI格式图像(.nii文件),现在我们来看看什么是.nii文件?该如何读取.nii文件?1. NIFTI格式图像什么是NIFTI(Neuroimaging Informatics Technology Initiative)格式图像?在讲解什么是NIFTI格式之前,得先了解一下 Analyze格式。Analyze格式储存的每组数据组包含2个...

2019-09-01 09:08:36 38915 12

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除