softmax

MNIST手写体识别任务

回眸只為那壹抹淺笑 提交于 2019-12-05 09:02:00
下面我们介绍一个神经网络中的经典示例,MNIST手写体识别。这个任务相当于是机器学习中的HelloWorld程序。 MNIST数据集介绍 MNIST是一个简单的图片数据集,包含了大量的数字手写体图片。下面是一些示例图片: MNIST数据集是含标注信息的,以上图片分别代表5, 0, 4和1。 由于MNIST数据集是TensorFlow的示例数据,所以我们不必下载。只需要下面两行代码,即可实现数据集的读取工作: from tensorflow .examples .tutorials .mnist import input_data mnist = input_data. read_data_sets ( "MNIST_data/" , one_hot=True) MNIST数据集一共包含三个部分:训练数据集(55,000份,mnist.train)、测试数据集(10,000份,mnist.test)和验证数据集(5,000份,mnist.validation)。一般来说,训练数据集是用来训练模型,验证数据集可以检验所训练出来的模型的正确性和是否过拟合,测试集是不可见的(相当于一个黑盒),但我们最终的目的是使得所训练出来的模型在测试集上的效果(这里是准确性)达到最佳。 MNIST中的一个数据样本包含两块:手写体图片和对于的label。这里我们用 xs 和 ys

TensorFlow 学习笔记

五迷三道 提交于 2019-12-05 08:48:05
TensorFlow是一个Google开源的深度学习框架。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。以下内容是基于Udacity深度学习课程的学习笔记。 安装TensorFlow 利用Conda来安装TensorFlow,需要安装一个TensorFlow环境和所需要的包。 OSX或Linux conda create -n tensorflow python = 3.5 source activate tensorflow conda install pandas matplotlib jupyter notebook scipy scikit -learn conda install -c conda -forge tensorflow Windows conda create -n tensorflow python = 3.5 activate tensorflow conda install pandas matplotlib jupyter notebook scipy scikit -learn conda install -c conda -forge tensorflow

[NLP] Adaptive Softmax

扶醉桌前 提交于 2019-12-05 07:26:48
1. Overview Adaptive softmax 算法在链接1中的论文中提出,该算法目的是为了提高softmax函数的运算效率,适用于一些具有非常大词汇量的神经网络。 在NLP的大部分任务中,都会用到softmax,但是对于词汇量非常大的任务,每次进行完全的softmax会有非常大的计算量,很耗时(每次预测一个token都需要O(|V|)的时间复杂度)。 所以paper中提出adaptive softmax来提升softmax的运算效率。 1) 该算法的提出利用到了 单词分布不均衡的特点 (unbalanced word distribution)来形成 clusters , 这样在计算softmax时可以避免对词汇量大小的线性依赖关系,降低计算时间; 2) 另外通过结合 现代架构和矩阵乘积操作的特点 ,通过使其更适合GPU单元的方式进一步加速计算。 2. Introduction 2.1 一般降低softmax计算复杂度的两种方式 1) 考虑原始分布:近似原始概率分布或近似原始概率分布的子集 2) 构造近似模型,但是产生准确的概率分布。比如:hierarchical softmax. (上述两个方法可以大致区分为:一是准确的模型产生近似概率分布,二是用近似模型产生准确的概率分布) 2.2 本文贡献点 paper中主要采用的上述(2)的方式

word2vec原理(一) CBOW与Skip-Gram模型基础

冷暖自知 提交于 2019-12-04 17:42:36
word2vec作为神经概率语言模型的输入,其本身其实是神经概率模型的副产品,是为了通过神经网络学习某个语言模型而产生的中间结果。具体来说,“某个语言模型”指的是“CBOW”和“Skip-gram”。具体学习过程会用到两个降低复杂度的近似方法——Hierarchical Softmax或Negative Sampling。两个模型乘以两种方法,一共有四种实现。 一、CBOW 1.一个单词上下文 2.参数更新 23多个单词上下文 二、Skip-gram 1.网络结构 2.参数更新 三、优化 原始的CBOW模型和Skip-Gram 模型的计算量太大,非常难以计算。 模型在计算网络输出的时候,需要计算误差 。对于CBOW 模型,需要计算$V$个误差(词汇表的大小),对于 Skip-Gram 模型,需要计算$CV$个误差。 另外,每个误差的计算需要用到 softmax 函数,该 softmax 函数涉及到O(V)复杂度的运算:$\sum _{j=1} ^ V exp(u_j)$ 。 每次梯度更新都需要计算网络输出。 如果词汇表有 100万 单词,模型迭代 100 次,则计算量超过 1 亿次。 虽然输入向量的维度也很高,但是由于输入向量只有一位为 1,其它位均为 0,因此输入的总体计算复杂度较小。 word2vec 优化的主要思想是: 限制输出单元的数量。 事实上在上百万的输出单元中

2.tensorflow——Softmax回归

浪尽此生 提交于 2019-12-04 13:41:41
import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data #download data mnist=input_data.read_data_sets('data/',one_hot=True) trainimg=mnist.train.images trainlabel=mnist.train.labels testimg=mnist.test.images print("downloading...") print("type:%s" % (type(mnist))) print("tain data size:%d" % (mnist.train.num_examples)) print("test data size:%d" % (mnist.test.num_examples)) print("tarin lable's shape: %s" % (trainlabel.shape,)) #show example # nsample = 5 # randidx=np.random.randint(trainimg.shape[0],size=nsample) #

why softmax_cross_entropy_with_logits_v2 return cost even same value

烈酒焚心 提交于 2019-12-04 11:10:22
i have tested "softmax_cross_entropy_with_logits_v2" with a random number import tensorflow as tf x = tf.placeholder(tf.float32,shape=[None,5]) y = tf.placeholder(tf.float32,shape=[None,5]) softmax = tf.nn.softmax_cross_entropy_with_logits_v2(logits=x,labels=y) with tf.Session() as sess: feedx=[[0.1,0.2,0.3,0.4,0.5],[0.,0.,0.,0.,1.]] feedy=[[1.,0.,0.,0.,0.],[0.,0.,0.,0.,1.]] softmax = sess.run(softmax, feed_dict={x:feedx, y:feedy}) print("softmax", softmax) console "softmax [1.8194163 0.9048325]" what i understand about this function was This function only returns cost when logits and labels

softmax 转载

孤街醉人 提交于 2019-12-04 08:39:23
https://www.zhihu.com/question/294679135/answer/885285177 softmax 虽然简单,但是其实这里面有非常的多细节值得一说。 我们挨个捋一捋。 1. 什么是 Softmax? 首先,softmax 的作用是把 一个序列,变成概率。 他能够保证: 所有的值都是 [0, 1] 之间的(因为概率必须是 [0, 1]) 所有的值加起来等于 1 从概率的角度解释 softmax 的话,就是 2. 文档里面跟 Softmax 有关的坑 这里穿插一个“小坑”,很多deep learning frameworks的 文档 里面 (PyTorch,TensorFlow)是这样描述 softmax 的, take logits and produce probabilities 很明显,这里面的 logits 就是 全连接层(经过或者不经过 activation都可以)的输出, probability 就是 softmax 的输出结果。 这里 logits 有些地方还称之为 unscaled log probabilities 。这个就很意思了,unscaled probability可以理解,那又为什么 全连接层直接出来结果会和 log 有关系呢? 原因有两个: 因为 全连接层 出来的结果,其实是无界的(有正有负),这个跟概率的定义不一致

Per pixel softmax for fully convolutional network

帅比萌擦擦* 提交于 2019-12-04 04:00:18
I'm trying to implement something like a fully convolutional network, where the last convolution layer uses filter size 1x1 and outputs a 'score' tensor. The score tensor has shape [Batch, height, width, num_classes]. My question is, what function in tensorflow can apply softmax operation for each pixel, independent of other pixels. The tf.nn.softmax ops seems not for such purpose. If there is no such ops available, I guess I have to write one myself. Thanks! UPDATE: if I do have to implement myself, I think I may need to reshape the input tensor to [N, num_claees] where N = Batch x width x

深度学习基础模型算法原理及编程实现--04.改进神经网络的方法

≡放荡痞女 提交于 2019-12-03 18:45:43
文章列表 1. 深度学习基础模型算法原理及编程实现–01.感知机 . 2. 深度学习基础模型算法原理及编程实现–02.线性单元 . 3. 深度学习基础模型算法原理及编程实现–03.全链接 . 4. 深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 . 5. 深度学习基础模型算法原理及编程实现–05.卷积神经网络 . 6. 深度学习基础模型算法原理及编程实现–06.循环神经网络 . 9. 深度学习基础模型算法原理及编程实现–09.自编码网络 . 9. 深度学习基础模型算法原理及编程实现–10.优化方法:从梯度下降到NAdam . … 深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 4.1 基本激活函数认知 4.1.1 sigmoid 5.1.2 tf.tanh 5.1.3 ReLU 5.1.4 Leaky ReLU 5.1.5 Softplus 5.2 增加隐藏层数 5.3 提升学习速率 5.3.1 梯度下降改为随机梯度下降 5.3.2 输出层激活函数与目标函数的选择 5.3.2.1 激活函数为sigmoid函数、损失函数为交叉项 5.3.2.2 激活函数为线性函数且损失函数为平方损失函数 5.3.2.3 损失函数为交叉项的好处 5.3.2.4 柔性最大值(softmax函数) 5.3.2.5 Softmax-loss 5.3.3

动手深度学习7-从零开始完成softmax分类

百般思念 提交于 2019-12-03 14:37:11
获取和读取数据 初始化模型参数 实现softmax运算 定义模型 定义损失函数 计算分类准确率 训练模型 小结 import torch import torchvision import numpy as np import sys import torchvision.transforms as transforms sys.path.append('..') import d2lzh_pytorch as d2l 获取和读取数据 我们将使用Fahsion_MNIST数据集,并设置批量大小为256 batch_size= 256 mnist_train= torchvision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST',download=True,train=True,transform=transforms.ToTensor()) mnist_test = torchvision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST',download=True,train=False,transform=transforms.ToTensor()) if sys.platform.startswith('win'): num_worker=0 #