softmax

Fast R-CNN

匿名 (未验证) 提交于 2019-12-03 00:21:02
R-CNN is slow because it performs a ConvNet forward pass for each object proposal, without sharing computation. Spatial pyramid pooling networks (SPPnets) were proposed to speed up R-CNN by sharing computation. The SPPnet method computes a convolutional feature map for the entire input image and then classifies each object proposal using a feature vector extracted from the shared feature map. Features are extracted for a proposal by maxpooling the portion of the feature map inside the proposal into a fixed-size output (e.g., 6 x 6). Multiple output sizes are pooled and then concatenated as in

李宏毅深度学习_Tips for Training Deep Neural Network

匿名 (未验证) 提交于 2019-12-03 00:20:01
本文是李宏毅深度学习 (2015)的学习笔记,主要介绍了在训练DNN过程中的不同阶段用到的一些技巧。本文所用到的图示主要来自课堂ppt。 原视频地址: 李宏毅深度学习 (2015) 想要提高深度学习的效率和收获比较好的结果,可以从以上五部分(其实只有四部分,Data Preprocessing没讲,可能涉及到数据归一化,PCA数据压缩等)入手,下面分别从每个部分入手,介绍一些常用于深度学习中的技巧。 一、Activation Function 在浅层BP神经网络中经常使用Sigmoid函数作为激活函数,但是Sigmoid函数在DNN中会存在一些问题:一方面,对Sigmoid函数求导计算量较大;另一方面,隐含层较多的情况下,BP过程中会出现Vanishing Gradient Problem。 Vanishing Gradient Problem 我们知道Sigmoid函数的导数最大值小于1(在0处,只有0.2左右),而在BP过程中, δ l = σ ′ ( z l ) ( W l + 1 ) T δ l + 1 δ l = σ ′ ( z l ) ( W l + 1 ) T δ l + 1 ,使得前一层的误差项 δ l δ l 会越来越小,致使求解出的梯度也会也来越小,这样在DNN的训练中,靠前的隐含层参数收敛速度会很慢。 ReLU 由上图可以看出,当 z z 的值大于0时

神经语言模型相关论文整理

匿名 (未验证) 提交于 2019-12-03 00:05:01
语言模型现已广泛应用于自然语言处理的多个领域,具有广阔的应用前景,尤其是近两年通用语言模型在多个自然语言处理任务的应用中获得了显著的提升,更是让我们看到语言模型的广阔应用场景。基于神经网络的语言模型是当前效果最好,也是当前应用最为广泛的模型之一,在本文将介绍神经网络语言模型中的一些代表性工作。 2000年,徐伟等人 首次提出使用神经网络训练语言模型 ,提出一种使用前馈神经网络构建二元语言模型的方法:《Can Artificial Neural Networks Learn Language Models》。 2003年,Bengio等人在论文《A neural probabilistic language model》提出使用三层前馈神经网络对语言模型进行建模, 其发现第一层的参数用作单词的特征向量表示具有较好的语义形式,同时也解决了词向量表示维度灾难的问题,为后续语言模型的重要应用――产生词向量奠定基础 。但此模型仍基于马尔科夫假设,与统计语言模型相比未体现出其优势。 2010年,Mikolov等人 首次提出使用循环神经网络对语言模型进行建模 :《Recurrent neural network based language model》,文中表明循环神经网络不再依赖于马尔科夫假设,能够更加充分的利用长文本的上下文进行建模,其训练的语言模型对比N-gram模型困惑度下降约50%

tf.nn.softmax 分类

匿名 (未验证) 提交于 2019-12-02 23:49:02
tf.nn.softmax(logits,axis=None,name=None,dim=None) 参数: logits:一个非空的Tensor。必须是下列类型之一:half, float32,float64 axis:将在其上执行维度softmax。默认值为-1,表示最后一个维度 name:操作的名称(可选) dim:axis的已弃用的别名 返回: 一个Tensor,与logits具有相同的类型和shape sample import tensorflow as tf #tf.enable_eager_execution() tf.compat.v1.enable_eager_execution() ones = tf.ones(shape=[2,3]) print(ones) temp1 = tf.nn.softmax(ones,axis=0) # 列 print(temp1) temp2 = tf.nn.softmax(ones,axis=1) # 行 print(temp2) output tf.Tensor( [[1. 1. 1.] [1. 1. 1.]], shape=(2, 3), dtype=float32) tf.Tensor( [[0.5 0.5 0.5] [0.5 0.5 0.5]], shape=(2, 3), dtype=float32) tf

TensorFlow学习笔记(1) tf.name_scope(‘scope_name’)

匿名 (未验证) 提交于 2019-12-02 23:38:02
TensorFlow中的name_scope函数的作用是创建一个参数名称空间,这个空间里包括许多参数,每个参数有不同的名字,这样可以更好的管理参数空间,防止变量命名时产生冲突。 # 这里的name_scope是创建了一个命名空间,相当于一个参数名称空间,这个空间Softmax_layer_and_output里存储了许多参数: # 包括softmax_w和softmax_b等。 with tf.name_scope("Softmax_layer_and_output"): softmax_w = tf.get_variable("softmax_w",[200,class_num],dtype=tf.float32) softmax_b = tf.get_variable("softmax_b",[class_num],dtype=tf.float32) 需要注意的是tf.Variable()和tf.get_variable()的区别: 从两个方法的名称上,可以简单理解一下,Variable是定义变量,而get_variable是获取变量(只不过如果获取不到就重新定义一个变量),如果按照这种逻辑,已经基本上可以理解两者的差异了。 文章来源: https://blog.csdn.net/qq_39488801/article/details/90768221

吴恩达深度学习编程作业1-1

匿名 (未验证) 提交于 2019-12-02 23:37:01
import numpy as np import matplotlib.pyplot as plt import h5py import scipy from PIL import Image from scipy import ndimage % matplotlib inline 第一部分: python 的numpy 基础练习 1.1“sigmoid ” def sigmoid(x): """ 计算x的sigmoid 参数: x 是一个值 或者一个数列,范围是无穷 返回: s -- simoid(x) """ s = 1.0/(1+1/np.exp(x)) return s 测试当x是一个值或者一个数列时候不同结果 print('x is a number of 3',sigmoid(3)) print('x is a array of [1,2,3]',sigmoid(np.array([1,2,3]))) 0utput: x is a number of 3 0.9525741268224334 x is a array of [1,2,3] [0.73105858 0.88079708 0.95257413] 1.2 编写sigmoid_derivative方法实现sigmoid 梯度计算 sigmoid 的代价函数和推导过程可以看吴恩达老师的讲解,很好很详细。

数字识别,神经网络

元气小坏坏 提交于 2019-12-02 23:29:07
来源:https://www.numpy.org.cn/deep/basics/fit_a_line.html 数字识别 本教程源代码目录在 book/recognize_digits ,初次使用请您参考 Book文档使用说明 。 # 说明: 硬件环境要求: 本文可支持在CPU、GPU下运行 Docker镜像支持的CUDA/cuDNN版本: 如果使用了Docker运行Book,请注意:这里所提供的默认镜像的GPU环境为 CUDA 8/cuDNN 5,对于NVIDIA Tesla V100等要求CUDA 9的 GPU,使用该镜像可能会运行失败。 文档和脚本中代码的一致性问题: 请注意:为使本文更加易读易用,我们拆分、调整了train.py的代码并放入本文。本文中代码与train.py的运行结果一致,可直接运行 train.py 进行验证。 # 背景介绍 当我们学习编程的时候,编写的第一个程序一般是实现打印"Hello World"。而机器学习(或深度学习)的入门教程,一般都是 MNIST 数据库上的手写识别问题。原因是手写识别属于典型的图像分类问题,比较简单,同时MNIST数据集也很完备。MNIST数据集作为一个简单的计算机视觉数据集,包含一系列如图1所示的手写数字图片和对应的标签。图片是28x28的像素矩阵,标签则对应着0~9的10个数字。每张图片都经过了大小归一化和居中处理。

词向量经典模型:从word2vec、glove、ELMo到BERT

两盒软妹~` 提交于 2019-12-02 21:45:48
前言 词向量技术将自然语言中的词转化为稠密的向量,相似的词会有相似的向量表示,这样的转化方便挖掘文字中词语和句子之间的特征。生成词向量的方法从一开始基于统计学的方法(共现矩阵、SVD分解)到基于不同结构的神经网络的语言模型方法。这里总结一下比较经典的语言模型方法:word2vec、glove、ELMo、BERT。 其中BERT是最新Google发表的模型,在11个经典的NLP任务中全面超越最佳模型,并且为下游任务设计了简单至极的接口,改变了之前花销的Attention、Stack等盖楼似的堆叠结构的玩法,应该属于NLP领域里程碑式的贡献。 word2vec word2vec来源于2013年的论文《Efficient Estimation of Word Representation in Vector Space》,它的核心思想是通过词的上下文得到词的向量化表示,有两种方法:CBOW(通过附近词预测中心词)、Skip-gram(通过中心词预测附近的词): CBOW : 通过目标词的上下文的词预测目标词,图中就是取大小为2的窗口,通过目标词前后两个词预测目标词。具体的做法是,设定词向量的维度d,对所有的词随机初始化为一个d维的向量,然后要对上下文所有的词向量编码得到一个隐藏层的向量,通过这个隐藏层的向量预测目标词,CBOW中的做法是简单的相加,然后做一个softmax的分类

CS231n: How to calculate gradient for Softmax loss function?

人盡茶涼 提交于 2019-12-02 18:09:15
I am watching some videos for Stanford CS231: Convolutional Neural Networks for Visual Recognition but do not quite understand how to calculate analytical gradient for softmax loss function using numpy . From this stackexchange answer, softmax gradient is calculated as: Python implementation for above is: num_classes = W.shape[0] num_train = X.shape[1] for i in range(num_train): for j in range(num_classes): p = np.exp(f_i[j])/sum_i dW[j, :] += (p-(j == y[i])) * X[:, i] Could anyone explain how the above snippet work? Detailed implementation for softmax is also included below. def softmax_loss

Deploy network is missing a Softmax layer

让人想犯罪 __ 提交于 2019-12-02 04:23:34
问题 I try to use pretrained model (VGG 19) to DIGITS but I got this error. ERROR: Your deploy network is missing a Softmax layer! Read the documentation for custom networks and/or look at the standard networks for examples I try to test with my dataset which has only two classes. I read this and this try to modify last layer but also I got error. How can I modify layers based on new dataset? I try to modify the last layer and I got error ERROR: Layer 'softmax' references bottom 'fc8' at the TRAIN