自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 《Java并发编程的艺术》读书笔记

第1章 并发编程的挑战1.1 上下文切换CPU通过给每个线程分配CPU时间片来实现单核CPU的多线程执行。切换前会保存上一个任务的状态,以便下次切换回这个任务的时候,可以再加载到这个任务的状态,任务从保存到加载的过程就是一次上下文的切换。如何减少上下文切换?无锁并发编程、CAS算法、使用最少线程和使用协程。1.2 死锁1.3 资源限制的挑战资源限制是指在进行并发编程的时候,程序的执行速度受限于计算机的硬件资源或者软件资源。第2章 Java并发机制的底层实现原理2.1 volatile的应.

2022-05-13 13:15:34 746

原创 图像分割领域的评价指标

这些天刚开始接触视频物体分割(VOS),调研了一下视频分割领域的评价指标,做个小总结。文章目录语义分割1.Intersection over Union(IoU)2.Pixel-Accuracy实例分割1.Precision(P)2.Recall(R)3.Contour Accuracy (F)语义分割1.Intersection over Union(IoU)交并比,指的是预测部分和ground-truth的交集比上并集,是评价图像分割好坏的根本指标。IoU也叫Region Jaccard(J)。

2020-06-09 01:42:30 2642

转载 P-R曲线

Inst#是样本序号,图中有20个样本。Class是ground truth 标签,p是positive样本(正例),n当然就是negative(负例) score是我的分类器对于该样本属于正例的可能性的打分。因为一般模型输出的不是0,1的标注,而是小数,相当于置信度。然后设置一个从高到低的阈值y,大于等于阈值y的被我正式标注为正例,小于阈值y的被我正式标注为负例。显然,我设置n个阈值...

2019-11-22 16:41:31 580

原创 ResNet和DenseNet

理论上来说,对神经网络添加新的层,充分训练之后应该更能够有效地降低误差。因为原模型解的空间只能是新模型解空间的子空间。也就是说,新模型可能会得出更优的解来拟合训练数据。但是在实践中却不是这样,添加过多的层后训练误差往往不降反升,即使利用批量归一化带来的数值稳定性训练能使训练深层模型更加容易,该问题依然存在。针对这个问题,何凯明等人提出了残差网络(ResNet)。其在2015年的Imag...

2019-11-05 20:17:33 584

原创 批量归一化

批量归一化(batch normalization)能够让较深的神经网络训练变得更加容易。首先来复习一下标准化的定义:对数据减去均值之后再除以标准差。标准化处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输入数据使得各个特征的分布相近,往往能够训练出更加有效的模型。对于浅层模型来说,对输入数据进行标准化就已经足够了。但是对于深度网络来说,即使对输入数据标准化,...

2019-10-23 12:40:57 1160 1

原创 k折(k-fold)交叉验证

k折交叉验证是用来选择模型设计并调节超参数的。首先,我们先来看一下k折交叉验证的使用背景:我在训练模型的时候,通过已有的数据训练得出一个模型,在这里用于训练的数据称为训练集。当我们把这个模型部署到真实环境去的时候,通过真实的数据得到结果,这个时候这些真实的数据就叫做测试集。那么问题来了,我们在训练模型的时候怎么样评估模型的好坏呢?怎么样调节模型的超参数呢?答:一般我们都是将训练用的...

2019-10-20 11:12:15 1937

原创 GoogLeNet

在2014年的ImageNet图像识别挑战赛中,GeogLeNet大放异彩。GeogLeNet在名字上向LeNet致敬,其吸收了NiN中网络串联网络的思想,并在此基础上进行了改进,变成了一个串联与并联都有的网络。Inception块Inception块是GeogLeNet中的基础卷积块,其名字来自于同名电影《盗梦空间》(Inception)。其包括4条并行的线路。用于抽取不同空间尺度下...

2019-10-15 19:56:31 175

原创 NiN

NiN——Network in NetworkLeNet、AlexNet和VGG设计上的共同之处是:先由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。而AlexNet和VGG对LeNet的改进在于如何对这两个模块进行加宽(增加通道数)和加深。而NiN提供了另外一个思路:串联多个卷积层和“全连接”层构成的小网络来构建一个深层网络。这里的全连接层是有引号的,因为...

2019-10-13 16:21:10 278

原创 VGG网络

VGG这个名字来源于论文作者所在的实验室Visual Geometry Group。其提出了可以通过重复使用简单的基础块来构建深度模型的思路。VGG块(VGG-block)的结构:1.单层或者多层的卷积层2.单层池化层import d2lzh as d2lfrom mxnet import gluon, init, ndfrom mxnet.gluon import nn...

2019-10-12 14:32:09 1035

原创 AlexNet

传统的机器学习,自行设计特征提取函数,对图像的特征进行提取,再以特征作为输入,训练模型。这样导致了使用较干净的数据集和较有效的特征有时甚至比机器学习的模型的选择对分类结果的影响更大。而现在使用的深度学习,则省去了设计特征提取函数这一步骤,图像直接作为输入,训练模型。在训练模型的过程中,卷积层相当于是一个特征提取函数,多层卷积提取的是图像的高维特征,而卷积层的参数也是通过训练学习而来的。这一...

2019-10-12 14:07:57 222 2

原创 LeNet

LeNet名字来源于该论文的第一作者Yann LeCun。该网络是一个简单的卷积神经网络,其通过梯度下降训练卷积神经网络,将手写数字识别的准确性达到了一个突破性的高度。虽然简单,但却是一个奠基性的成果,卷积神经网络此时第一次被推上舞台,为世人所知。从零到一的突破总是最困难的。LeNet模型分成两个部分:卷积层块和全连接层块。1.卷积层块:包含卷积层和最大池化层。卷积层用来识别图像里的空...

2019-10-11 14:57:34 776

原创 卷积神经网络中的概念

卷积神经网络(convolutional neural network),顾名思义,就是含有卷积层(convolutional layer)的神经网络。但是卷积神经网络带来不仅仅只有卷积层,填充、步幅,以及池化层的操作,这些都是卷积神经网络基础中的基础。要好好掌握呀(╯▔皿▔)╯掀桌,感觉这些概念学了不止一次了,噗,菜是原罪一、二维卷积层卷积(convolution)运算其实就是将卷积核数...

2019-10-10 23:45:30 423

原创 MXNet使用GPU计算

GPU上的存储在MXNet中,mx.cpu()代表所有的物理CPU和内存,而mx.gpu()只代表一块GPU和相应的显存。(cpu对应内存,gpu对应显存)可以通过NDArray的context属性来查看该NDArray所在的设备。x.context我们可以通过多种方法创建NDArray到GPU的显存上。a = nd.array([1,2,3], ctx=mx.gpu())...

2019-09-30 20:34:14 4001

原创 MXNet模型参数的存储与读取

1.读写NDArray通过 nd.save(’filename‘,ndType) 和nd.load(’filename‘,ndType) 存储和读取from mxnet import ndfrom mxnet.gluon import nnx = nd.ones(3)nd.save('x', x)x2 = nd.load('x')x2 # 得到的x2是一个二维数组,而x是一...

2019-09-28 23:38:16 973

原创 MXNet自定义层

1.不含模型参数的自定义层from mxnet import gluon, ndfrom mxnet.gluon import nnclass CenteredLayer(nn.Block): # 自定义层 def __init__(self, **kwargs): super(CenteredLayer, self).__init__(**kwargs...

2019-09-28 22:10:39 327

原创 MXNet模型参数的延后初始化

模型的延后初始化先看下面这段代码:from mxnet import init, ndfrom mxnet.gluon import nnclass MyInit(init.Initializer): def _init_weight(self, name, data): print('Init', name, data.shape) # 实...

2019-09-28 15:23:40 433

原创 MXNet模型参数的访问、初始化和共享

模型参数的访问:# 通过net后面括号内的索引访问哪一层net[0].params, type(net[0].params)# 两种方法得到相应层的信息,一般使用后者,因为前者需要输入层的名称(权重和偏差)net[0].params['dense0_weight'], net[0].weight# 层包括了data和grad,即权重和梯度net[0].weight.data()n...

2019-09-28 09:11:01 1940

原创 MXNet模型构造

基于Block类的模型构造:回顾一下之前我们是怎么使用MXNet进行模型构造的?from mxnet import ndfrom mxnet.gluon import nnx = nd.random.uniform(shape=(10,10)net = nn.Sequential()net.add(nn.Dense(10, activation='relu')net.init...

2019-09-26 22:01:22 645

原创 数值稳定性和模型初始化

数值稳定性:衰减(vanishing)和爆炸(explosion)假设一个网络的第 层的输出为。此时,如果层数 较大,则可能会出现数值衰减和爆炸。举例:假设输入和所有层的权重参数都是标量,如果权重参数为0.2和5,那么第30层的输出为(衰减)和(爆炸)。类似,当层数较多时,梯度的计算也更容易出现衰减或者爆炸。随机初始化模型参数:为什么神经网络在训练前要随机初始化参数?能...

2019-09-24 23:31:23 187

原创 正向传播与反向传播(forward-propagation & back-propagation)

正向传播(forward-propagation):指对神经网络沿着输入层到输出层的顺序,依次计算并存储模型的中间变量。反向传播(back-propagation):沿着从输出层到输入层的顺序,依据链式法则,依次计算并存储目标函数有关神经网络各层的中间变量以及参数的梯度。反向传播是一种计算神经网络参数梯度的方法对于输入或输出X,Y,Z为任意形状张量的函数和通过链式法则,则有:...

2019-09-24 22:18:02 7762

原创 模型选择、欠拟合和过拟合

训练误差(training error):模型在训练数据集上表现出的误差。泛化误差(generalization error):模型在任意一个测试数据样本上表现出的误差的期望,常常通过测试数据集上的误差来近似。机器学习模型应该关注泛化误差。模型选择(model selection)1. 验证数据集(validation set):预留一部分在训练数据集和测试数据集以外的数据进行模型...

2019-09-22 11:59:45 572

原创 softmax回归和多层感知机的简洁实现

softmax回归import d2lzh as d2lfrom mxnet import gluon, initfrom mxnet.gluon import loss as gloss, nn# 读取数据集batch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)# 定义和...

2019-09-21 15:28:15 391

原创 激活函数

多层感知机在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。多层感知机的全连接层和隐藏层都是全连接层。激活函数:为什么要引入激活函数?答:多层感知机的全连接层只是对数据做仿射变换(affine transformation),即线性变换,而多个仿射变换的叠加依然是一个仿射变换,也就是说多层神经网络也就相当于一层。解决这个问题的办法就是在全连接层之间引入非线性变换,即激...

2019-09-19 23:44:53 197

原创 线性代数复习

本科时候学的线性代数里面的一些知识已经记不太清楚了,正好借着Ian的《深度学习》再复习一遍。另外再深化一下学线代的意义,当时本科学着完全不知道有什么用hhh。1. 标量、向量、矩阵和张量标量(scalar):一个标量就是一个单独的数。通常用斜体表示。向量(vector):一个向量是一列数。通常用粗体的小写变量名称表示。矩阵(matrix):矩阵是一个二维数组。通常用粗体的大写变...

2019-09-18 13:24:58 262

原创 softmax回归的从零实现

# softmax回归的从零开始%matplotlib inlineimport d2lzh as d2lfrom mxnet import autograd, nd# 定义迭代器batch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)# 定义输出与输入大小num_input...

2019-09-16 11:48:02 532

原创 softmax回归和交叉熵损失函数

softmax回归相对于线性回归输出单元从一个变成了多个,适合用来解决分类问题。且引入了softmax运算使得输出更适合离散值的预测和训练。交叉熵损失函数对比平方损失函数其没有那么严格,其只关注对正确类别的预测概率。1.softmax假定有4个特征,3个用于分类的类别,则有如下的12个权重,3个输出:为什么要用softmax?直接用上面的公式得到的的值(值域)大小不...

2019-09-15 00:17:09 1270

原创 conda创建虚拟环境及相关操作

参考https://blog.csdn.net/a493823882/article/details/87888509对内容进行了一些编辑。1、conda常用的命令。 1)conda env list或conda info -e查看当前存在哪些虚拟环境 2)conda list查看安装了哪些包。 3)conda update conda检查更新当前co...

2019-09-14 14:18:57 685

原创 线性回归(3)线性回归的简洁实现

一个小练习:线性回归的模型:y=x1W1+x2W2+b线性回归可以表示成一个单层的神经网络:输入层个数为2,输出层个数为1,由于输入层并不涉及计算,依照惯例,将输出层作为神经网络层数,故其层数为1使用MXNet框架自带的包可以很容易地实现神经网络。生成数据集:2个特征,1000例的数据集from mxnet import autograd, nd#生成数据集num_inpu...

2019-09-12 17:26:36 296

原创 线性回归(2)从零开始实现

from mxnet import ndfrom time import timea = nd.ones(shape=1000)b = nd.ones(shape=1000)start = time()c = nd.zeros(shape=1000)for i in range(1000): c[i] = a[i]+b[i]time() - startstart =...

2019-09-10 23:55:58 348

原创 线性回归(1)基本要素

线性回归模型可以说是机器学习里面第一个学的模型了,理解了这个过程,那么机器学习的一般过程也就很明白了。线性回归的模型如下:架设房价为y,房屋面积为x1,房龄为x2。我们收集一系列的这些数据,用于训练这个模型。一栋房屋被称为一个样本,真实价格y称为标签(label),用来预测的两个因素x1,x2称为特征(feature)预测表达式为:损失函数:用于测量预测值与真实值的误差 ...

2019-09-10 00:22:10 334

原创 mxnet预备知识之ndarray(3)查阅文档

学习一个框架最好的方法就是看文档,当然不用所有的函数都看,需要用什么就查。孤陋寡闻的我现在才知道python居然自带了help这个命令。from mxnet import nd#通过dir打印模块里的所有函数print(dir(nd.random))#通过help查阅特定函数的用法help(nd.ones_like)MXNet文档链接https://mxnet.apa...

2019-09-08 23:05:22 116

原创 mxnet预备知识之ndarray(2)自动求梯度

自动求梯度参考资料,李牧-深度学习-2.3from mxnet import autograd, nd# 创建向量并将其改为(4,1)的形状x = nd.arange(4).reshape((4,1))# reshape(-1,1)中的-1代表自动适应形状x = nd.arange(4).reshape((-1,1))# 这里记录求x的梯度,申请存储梯度的内存x.atta...

2019-09-08 23:00:33 614

原创 mxnet预备知识之ndarray(1)

数据操作参考资料:李沐-深度学习第二章-2.2from mxnet import nd#创建向量x = nd.arange(12)x.shapex.size#改变形状X = x.reshape((3,4))nd.zeros((2,3,4))nd.ones((3,4))#创建数组Y = nd.array([[2,1,4,3],[1,2,3,4],[4,3,2,1]...

2019-09-08 19:12:59 183

原创 给自己一个小总结(废话)

这个星期把TensorFlow+Keras深度学习人工智能实践这本书刷完了,感觉还是有代码刷起来会有成就感。怎么说呢,今天和学弟探讨了一下未来的路应该怎么走,我想了一下,觉得还是继续当个程序员or工程师吧,一方面我喜欢坐在电脑前敲键盘的声音(尤其是巴拉巴拉敲得很快的那种),另一方,感觉自己认识的牛逼的人全部都在做这个东西,所以说也是因为环境问题吧。看着他们感觉自己确实有很多很多的不足,一是方向的把...

2019-09-07 23:27:10 179

原创 安装TensorFlow GPU版本-防坑指南

安装tensorflow要安装CUDA和cuDNN,前者是GPU的通用计算架构包,也就是我们广义上理解的驱动,后者是GPU的深度学习库,能够为深度学习提供诸如卷积、池化和激活层等。网络上有许多安装CUDA和cuDNN的教程,大多数都是先下载CUDA和cuDNN,然后再进行tensorflow-gpu的安装。但是我还是建议先不要下载CUDA和cuDNN的包,为什么呢?因为你下载的CUDA...

2019-09-07 10:17:41 1351

原创 TensorFlow(3) 使用卷积神经网络识别MNIST手写数字集

import tensorflow as tfimport tensorflow.examples.tutorials.mnist.input_data as input_datamnist = input_data.read_data_sets('MNIST_data/',one_hot = True)#分配权重 truncated_normal为-产生不超过两倍标准差的值-的正太分布...

2019-09-04 22:49:31 207

原创 TensorFlow(2) 使用TF构建多层感知机预测MNIST数据集

import tensorflow as tfimport tensorflow.examples.tutorials.mnist.input_data as input_dataimport matplotlib.pyplot as plt#读入数据---------------------------------------------------------------------...

2019-09-01 13:07:43 212

原创 TensorFlow(1) 张量的使用

TensorFlow的张量:简单来说就是标量,向量,矩阵以及维度更高的矩阵import tensorflow as tf#定义常量ts_c = tf.constant(2, name='ts_c')#定义变量ts_x = tf.Variable(ts_c+5, name='ts_x')#一维张量ts_X = tf.Variable([0.4,0.2,0.4])#二维张量ts_...

2019-08-31 17:40:03 189

原创 Keras 建立MLP、RNN、LSTM模型进行IMDb情感分析

import urllib.requestimport osimport tarfilefrom keras.preprocessing import sequencefrom keras.preprocessing.text import Tokenizerfrom keras.models import Sequentialfrom keras.layers.core impor...

2019-08-31 11:23:58 1285 1

原创 Keras多层感知机预测泰坦尼克号旅客生存概率

import urllib.requestimport osimport numpy as npimport pandas as pdfrom sklearn import preprocessingfrom keras.models import Sequentialfrom keras.layers import Dense, Dropout#下载数据集url="http:...

2019-08-28 23:50:52 1006 1

空空如也

空空如也

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

TA关注的人

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