标签: deep-learning

什么是Caffe中的'lr_policy`?

我只是试着找出如何使用Caffe.为此,我只是看了一下.prototxt示例文件夹中的不同文件.有一个我不明白的选择:

# The learning rate policy
lr_policy: "inv"
Run Code Online (Sandbox Code Playgroud)

可能的值似乎是:

  • "fixed"
  • "inv"
  • "step"
  • "multistep"
  • "stepearly"
  • "poly"

有人可以解释一下这些选择吗?

machine-learning neural-network gradient-descent deep-learning caffe

34
推荐指数
2
解决办法
3万
查看次数

如何理解TensorFlow中的术语"张量"?

我是TensorFlow的新手.在阅读现有文档时,我发现该术语tensor确实令人困惑.因此,我需要澄清以下问题:

  1. tensor&Variable,tensor
    tf.constant'张量'对比有tf.placeholder什么关系?
  2. 它们是各种类型的张量?

python machine-learning deep-learning tensorflow tensor

34
推荐指数
3
解决办法
2万
查看次数

如何在Keras中使用return_sequences选项和TimeDistributed层?

我有一个像下面的对话框.我想实现一个预测系统动作的LSTM模型.系统动作被描述为位向量.并且用户输入被计算为字嵌入,其也是位向量.

t1: user: "Do you know an apple?", system: "no"(action=2)
t2: user: "xxxxxx", system: "yyyy" (action=0)
t3: user: "aaaaaa", system: "bbbb" (action=5)
Run Code Online (Sandbox Code Playgroud)

所以我想要实现的是"多对多(2)"模型.当我的模型收到用户输入时,它必须输出系统操作. 在此输入图像描述 但我无法理解LSTM后的return_sequences选项和TimeDistributed图层.要实现"多对多(2)",需要return_sequences==True添加TimeDistributedLSTM后?如果你能更多地描述它们,我感激不尽.

return_sequences:布尔值.是返回输出序列中的最后一个输出,还是返回完整序列.

TimeDistributed:此包装器允许将图层应用于输入的每个时间片.

更新2017/03/13 17:40

我想我能理解这个return_sequence选项.但我还不确定TimeDistributed.如果我添加一个TimeDistributedLSTM之后,模型是否与下面的"我的多对多(2)"相同?所以我认为Dense图层适用于每个输出. 在此输入图像描述

deep-learning lstm keras recurrent-neural-network

34
推荐指数
2
解决办法
1万
查看次数

convert_imageset.cpp指南

我对机器学习/ python/ubuntu比较新.

我有一组.jpg格式的图像,其中一半包含我想要学习的功能,一半不需要.我找不到将它们转换为所需的lmdb格式的方法.

我有必要的文本输入文件.

我的问题是,任何人都可以提供有关如何convert_imageset.cpp在ubuntu终端中使用的分步指南吗?

谢谢

machine-learning image-processing computer-vision deep-learning caffe

33
推荐指数
1
解决办法
3万
查看次数

Keras.io.preprocessing.sequence.pad_sequences有什么作用?

可以在这里改进Keras文档.阅读完本文后,我仍然不明白这是怎么回事:Keras.io.preprocessing.sequence.pad_sequences

有人可以阐明这个功能的作用,并且理想情况下提供一个例子吗?

python deep-learning keras

33
推荐指数
2
解决办法
2万
查看次数

Keras - categorical_accuracy和sparse_categorical_accuracy之间的区别

categorical_accuracysparse_categorical_accuracyKeras有什么区别?这些指标文档中没有任何提示,并且通过询问谷歌博士,我也没有找到答案.

源代码可以在这里找到:

def categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.argmax(y_true, axis=-1),
                          K.argmax(y_pred, axis=-1)),
                  K.floatx())


def sparse_categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.max(y_true, axis=-1),
                          K.cast(K.argmax(y_pred, axis=-1), K.floatx())),
                  K.floatx())
Run Code Online (Sandbox Code Playgroud)

classification machine-learning neural-network deep-learning keras

33
推荐指数
3
解决办法
2万
查看次数

解决阶级失衡问题:缩减对损失和sgd的贡献

(已添加此问题的更新.)

我是比利时根特大学的研究生; 我的研究是用深度卷积神经网络进行情感识别.我正在使用Caffe框架来实现CNN.

最近我遇到了关于班级失衡的问题.我正在使用9216个训练样本,约 5%标记为阳性(1),其余样品标记为阴性(0).

我正在使用SigmoidCrossEntropyLoss图层来计算损失.在训练时,即使在几个时期之后,损失也会减少并且准确度非常高.这是由于不平衡:网络总是预测为负(0).(精确度和召回率均为零,支持此声明)

为了解决这个问题,我想根据预测 - 真值组合衡量对损失的贡献(严厉惩罚假阴性).我的导师/教练还建议我通过随机梯度下降(sgd)反向传播时使用比例因子:该因子将与批次中的不平衡相关联.仅包含负样本的批次根本不会更新权重.

我只向Caffe添加了一个自定义图层:报告其他指标,如精度和召回.我对Caffe代码的经验有限,但我有很多编写C++代码的专业知识.


任何人都可以帮助我或指出我如何调整SigmoidCrossEntropyLossSigmoid层以适应以下变化:

  1. 根据预测 - 真值组合调整样本对总损失的贡献(真阳性,假阳性,真阴性,假阴性).
  2. 根据批次中的不平衡(负数与正数)来衡量随机梯度下降所执行的权重更新.

提前致谢!


更新

按照Shai的建议加入了InfogainLossLayer.我还添加了另一个自定义层,H根据当前批次中的不平衡构建了infogain矩阵.

目前,矩阵配置如下:

H(i, j) = 0          if i != j
H(i, j) = 1 - f(i)   if i == j (with f(i) = the frequency of class i in the batch)
Run Code Online (Sandbox Code Playgroud)

我计划将来为矩阵试验不同的配置.

我已经用10:1的不平衡测试了这个.结果表明网络现在正在学习有用的东西:( 30个时期后的结果)

  • 准确度约为.~70%(低于~97%);
  • 精度约为 ~20%(从0%起);
  • 召回是约.~60%(从0%上调). …

c++ machine-learning neural-network deep-learning caffe

32
推荐指数
1
解决办法
7921
查看次数

CBOW vs skip-gram:为什么要颠倒上下文和目标词?

这个页面中,据说:

[...] skip-gram反转上下文和目标,并尝试从其目标词中预测每个上下文单词[...]

然而,看看它产生的训练数据集,X和Y对的内容似乎是可互换的,因为那两对(X,Y):

(quick, brown), (brown, quick)

那么,为什么在上下文和目标之间区分那么多,如果最终是同一个东西呢?

另外,在word2vec上进行Udacity的深度学习课程练习,我想知道为什么他们似乎在这个问题上做了很多差异:

skip-gram的另一种选择是另一种名为CBOW(连续词袋)的Word2Vec模型.在CBOW模型中,您不是从单词向量预测上下文单词,而是从其上下文中所有单词向量的总和预测单词.实施和评估在text8数据集上训练的CBOW模型.

这会产生相同的结果吗?

nlp word2vec deep-learning tensorflow word-embedding

32
推荐指数
1
解决办法
3万
查看次数

如何以干净,高效的方式在pytorch中获得迷你批次?

我试图做一个简单的事情,用火炬训练带有随机梯度下降(SGD)的线性模型:

import numpy as np

import torch
from torch.autograd import Variable

import pdb

def get_batch2(X,Y,M,dtype):
    X,Y = X.data.numpy(), Y.data.numpy()
    N = len(Y)
    valid_indices = np.array( range(N) )
    batch_indices = np.random.choice(valid_indices,size=M,replace=False)
    batch_xs = torch.FloatTensor(X[batch_indices,:]).type(dtype)
    batch_ys = torch.FloatTensor(Y[batch_indices]).type(dtype)
    return Variable(batch_xs, requires_grad=False), Variable(batch_ys, requires_grad=False)

def poly_kernel_matrix( x,D ):
    N = len(x)
    Kern = np.zeros( (N,D+1) )
    for n in range(N):
        for d in range(D+1):
            Kern[n,d] = x[n]**d;
    return Kern

## data params
N=5 # data set size
Degree=4 # number dimensions/features
D_sgd = …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning deep-learning pytorch

32
推荐指数
4
解决办法
3万
查看次数

检查PyTorch模型中的参数总数

如何计算PyTorch模型中的参数总数?类似于model.count_params()Keras的东西.

deep-learning pytorch

32
推荐指数
5
解决办法
1万
查看次数