小编Cec*_*lia的帖子

我什么时候应该使用`稀疏`?

我一直在查看Matlab的sparse文档,试图找出是否有任何关于何时使用稀疏表示而不是完整表示的指导.

例如,我有一个data大约30%非零条目的矩阵.我可以查看使用的内存.

whos data
  Name             Size                 Bytes  Class     Attributes

  data      84143929x11            4394073488  double    sparse    
Run Code Online (Sandbox Code Playgroud)
data = full(data);
whos data
  Name             Size                 Bytes  Class     Attributes

  data      84143929x11            7404665752  double              
Run Code Online (Sandbox Code Playgroud)

在这里,我显然在节省内存,但对于任何具有30%非零条目的矩阵,这是否都适用?50%的非零条目怎么样?是否有一个经验法则,我应该将百分比转换为完整矩阵?

那么计算呢?使用稀疏矩阵进行矩阵乘法通常更慢或更快吗?稀疏矩阵运算表示

稀疏运算的计算复杂度与nnz成比例,nnz是矩阵中非零元素的数量.计算复杂度也线性地取决于矩阵的行大小m和列大小n,但是与乘积m*n(零和非零元素的总数)无关.

在不了解更多细节的情况下,很难与完整矩阵进行比较.

Scipy的稀疏矩阵库解释了每种稀疏格式的优缺点.比如说csc_matrix

CSC格式的优点

  • 高效算术运算CSC + CSC,CSC*CSC等
  • 有效的列切片
  • 快速矩阵矢量积(CSR,BSR可能更快)

CSC格式的缺点

  • 慢行切片操作(考虑CSR)
  • 稀疏结构的变化是昂贵的(考虑LIL或DOK)

是否sparse存在关于Matlab 实现的类似信息?如果是这样我在哪里可以找到它?

matlab sparse-matrix

12
推荐指数
1
解决办法
3065
查看次数

什么会导致WordNetCorpusReader没有属性LazyCorpusLoader?

我有一个简短的函数,通过将它与Natural Language Toolkit中的WordNet语料库进行比较来检查单词是否是真正的单词.我从一个验证txt文件的线程调用此函数.当我运行我的代码时,第一次调用该函数时,它会抛出带有消息的AttributeError

"'WordNetCorpusReader' object has no attribute '_LazyCorpusLoader__args'"
Run Code Online (Sandbox Code Playgroud)

当我暂停执行时,同一行代码不会引发错误,因此我假设在我第一次调用时尚未加载语料库导致错误.

我曾尝试使用nltk.wordnet.ensure_loaded()强制加载语料库,但我仍然得到同样的错误.

这是我的功能:

from nltk.corpus import wordnet as wn
from nltk.corpus import stopwords
from nltk.corpus.reader.wordnet import WordNetError
import sys

cachedStopWords = stopwords.words("english")

def is_good_word(word):
    word = word.strip()
    if len(word) <= 2:
        return 0
    if word in cachedStopWords:
        return 0
    try:
        wn.ensure_loaded()
        if len(wn.lemmas(str(word), lang='en')) == 0:
            return 0
    except WordNetError as e:
        print "WordNetError on concept {}".format(word)
    except AttributeError as e:
        print "Attribute error on concept {}: {}".format(word, e.message) …
Run Code Online (Sandbox Code Playgroud)

python multithreading attributes exception nltk

11
推荐指数
1
解决办法
5306
查看次数

如何在Chrome中将Set转换为数组?

如何将Set转换为Array?给出了将Set转换为数组的三个答案,其中没有一个目前在Chrome浏览器中有效.

假设我有一个简单的Set

var set_var = new Set(['a', 'b', 'c']);
Run Code Online (Sandbox Code Playgroud)

我可以遍历我的变量并将元素添加到空数组中

var array_var = [];
set_var.forEach(function(element){array_var.push(element)});
Run Code Online (Sandbox Code Playgroud)

但是有没有其他方法可以提供更广泛的浏览器支持?

javascript google-chrome

7
推荐指数
1
解决办法
938
查看次数

如何在外面点击使模态关闭

我在下面使用过这个JavaScript:

$('body').click(function() {
  if (!$(this.target).is('#popUpForm')) {
    $(".modalDialog").hide();
  }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <div id="openModal" class="modalDialog">
    <div class="modalClose">
      <a href="#close" title="Close" class="close-circle" style="color:white; text-decoration:none; font-size:14px;"></a>
      <div id="signup-header">
        <h4>Request a brochure, with a free demo</h4>
        <h5>Please Fill in the form below: </h5>
      </div>

      <form id="popUpForm" class="tryMeForm" name="" onsubmit="return formCheck(this);" method="post" action="">
        <div class="InputGroup">
          <input type="text" name="name" id="name" value="" placeholder="First Name*" />
        </div>
        <div class="InputGroup">
          <input type="text" name="lastname" id="lastname" value="" placeholder="Last Name*" />
        </div>
        <div class="InputGroup">
          <input type="text" name="Email" id="Email" value="" placeholder="Email Address*" …
Run Code Online (Sandbox Code Playgroud)

javascript

7
推荐指数
5
解决办法
4万
查看次数

我可以使用逻辑索引或索引列表来切片张量?

我正在尝试使用列上的逻辑索引切片PyTorch张量.我想要与索引向量中的1值对应的列.切片和逻辑索引都是可能的,但它们是否可以一起使用?如果是这样,怎么样?我的尝试一直在抛出无益的错误

TypeError:使用ByteTensor类型的对象索引张量.唯一支持的类型是整数,切片,numpy标量和torch.LongTensor或torch.ByteTensor作为唯一的参数.

MCVE

期望的输出

C = torch.LongTensor([[1, 3], [4, 6]])
# 1 3
# 4 6
Run Code Online (Sandbox Code Playgroud)

仅对列进行逻辑索引

import torch
A_log = torch.ByteTensor([1, 0, 1]) # the logical index
B = torch.LongTensor([[1, 2, 3], [4, 5, 6]])
C = B[:, A_log] # Throws error
Run Code Online (Sandbox Code Playgroud)

我也试过使用索引列表

import torch
A_idx = torch.LongTensor([0, 2]) # the index vector
B = torch.LongTensor([[1, 2, 3], [4, 5, 6]])
C = B[:, A_idx] # Throws error
Run Code Online (Sandbox Code Playgroud)

如果向量大小相同,则逻辑索引有效

import torch
A_log = torch.ByteTensor([1, 0, 1]) # the logical …
Run Code Online (Sandbox Code Playgroud)

python matrix-indexing pytorch

7
推荐指数
2
解决办法
8719
查看次数

对邻接矩阵的行和列进行排序以显示派系

我正在寻找一种重新排序技术来将邻接矩阵的连通分量组合在一起.

例如,我用蓝色和绿色两组进行了说明.最初,'1的条目分布在矩阵的行和列中.通过重新排序行和列,所有'1'可以位于矩阵的两个连续部分中,更清楚地显示蓝色和绿色分量.

插图

我不记得这种重新排序技术是什么.我搜索了邻接矩阵,集团,排序和重新排序的许多组合.

我发现的最接近的点击是

  1. symrcm 将元素移近对角线,但不制作组.

  2. 有没有办法重新排序矩阵的行和列,以创建一个密集的角,在R?重点是删除完全空的行和列

请提供此技术的通用名称,以便我可以更有效地谷歌,或指向我的Matlab功能的方向.

algorithm matlab clique-problem adjacency-matrix

6
推荐指数
1
解决办法
1524
查看次数

"预期"('功能型演员或类型构造'错误意味着什么?

我收到错误"预期"('用于函数式转换或类型构造',并尽我所能在线研究此错误的含义,但无法找到导致此错误的原因的任何文档.

我发现错误的Stack Overflow上的所有相关问题修复了特定的代码片段,并没有更一般地解释导致错误的原因.

这些包括

  1. 预期的'('用于函数式转换或类型构造的答案突出了代码的几个问题.哪个问题实际上导致错误尚不清楚.
  2. c ++ Xcode期望'('用于函数式转换或类型构造定义主函数内的函数.这似乎是一个明确的语法问题,但为什么产生这个特定错误仍然不清楚.
  3. '''用于函数式转换或构造类型Xcode错误.在最后一个示例中,OP以一种看起来非常类似于函数声明的方式调用函数,并且它们声明一个具有相同名称但具有不同签名的函数.根据抛出错误的位置和错误消息,似乎错误与函数声明有关.

我可以获得一个文档风格的答案,翻译"功能式演员"和"类型构造"的意思是简单的英语吗?什么时候编译器选择抛出此错误而不是其他错误?

我不想要一个特定于我自己的错误的答案,但是根据要求,这是我的MCVE

#include <boost/integer_traits.hpp>

class Test{
    const double MAX_DEPTH_VAL = (double) boost::integer_traits<unsigned short>.const_max;
    const double MIN_DEPTH_VAL = (double) boost::integer_traits<unsigned short>.const_max;

};
Run Code Online (Sandbox Code Playgroud)

我被引导相信这种语法是可能的,通过这个答案/sf/answers/191700351/

c++

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

使用 Anaconda cmake 前缀查找 boost-python3

DLDR如何将 cmake 指向 boost-python3 库?cmake 不会自动检测到它。


我正在尝试使用提供的 cmake 为 Python 3.6构建caffe

我的系统规格:

  • Python 3.6.5,Anaconda 自定义(64 位)
  • Mac 操作系统 10.13.6
  • 没有CUDA

我已经用 brew 安装了 boost,例如

brew install boost boost-python3
Run Code Online (Sandbox Code Playgroud)

我可以使用find / -name libboost* 2>/dev/null. 它们出现在三个目录中

  1. /usr/local/Cellar/boost/1.67.0_1/lib/
  2. /usr/local/lib/ -> 符号链接到上面
  3. boost-python3 在 /usr/local/Cellar/boost-python/1.67.0/lib/

如果我运行cmake -DCMAKE_PREFIX_PATH=<anaconda_env_path> -D python_version=3,我会在输出的顶部得到它

-- Boost version: 1.67.0
-- Found the following Boost libraries:
--   system
--   thread
--   filesystem
--   chrono
--   date_time
--   atomic
Run Code Online (Sandbox Code Playgroud)

但再往下,我也得到

CMake Warning at /Users/Mauceri/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1723 (message): …
Run Code Online (Sandbox Code Playgroud)

c++ boost cmake anaconda caffe

6
推荐指数
1
解决办法
1601
查看次数

addface::OpenMesh 中的复杂边缘错误

我一直在关注 OpenMesh 教程的第一步 -通过一些修改构建一个立方体,我使用的是 TriMesh 而不是 PolyMesh 并且正在构建金字塔而不是立方体。

不知何故,PolymeshT::add_face:complex edge我的第二张脸和第三张脸都出现了错误。这些面应该在点 (0,0,0)、(0,1,0) 和 (0,0,1) 以及点 (0,0,0)、(0,0,1) 和(1,0,0)。

当每个面被构造为 (0,0,0) 到 (0,1,0) 和 (0,0,0) 到 (0,0,1) 时,两条边已经存在,但我应该能够在其中创建面一些边缘已经存在,不是吗?

到目前为止我尝试过的解决方案

  • 改变坐标
  • 使用 PolyMesh 代替 TriMesh

我无法发现我正在做的与教程不同的任何其他事情。

#include <OpenMesh/Core/IO/MeshIO.hh>
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
typedef OpenMesh::TriMesh_ArrayKernelT<> MyTriMesh;

// Make a pyramid
int main()
{
    MyTriMesh tin;

    // generate vertices
    MyTriMesh::VertexHandle vhandle[4];
    vhandle[0] = tin.add_vertex(MyTriMesh::Point(0, 0, 0));
    vhandle[1] = tin.add_vertex(MyTriMesh::Point(0, 1, 0));
    vhandle[2] = tin.add_vertex(MyTriMesh::Point(1, 0, 0));
    vhandle[3] = tin.add_vertex(MyTriMesh::Point(0, 0, 1));

    // …
Run Code Online (Sandbox Code Playgroud)

c++ openmesh

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

错误表示加载预训练的网络时尺寸展平

我正在尝试加载预训练的网络,但出现以下错误

F1101 23:03:41.857909 73 net.cpp:757]无法从图层'fc4'复制参数0权重;形状不匹配。源参数形状为512 4096(2097152);目标参数形状为512 256 4 4(2097152)。要从头开始学习该层的参数,而不是从保存的网络中复制,请重命名该层。

我注意到512 x 256 x 4 x 4 == 512 x 4096,因此似乎在保存和重新加载网络权重时,层以某种方式变得平坦。

如何解决此错误?

重现

我正在尝试在此GitHub存储库中使用D-CNN预训练的网络。

我用

import caffe
net = caffe.Net('deploy_D-CNN.prototxt', 'D-CNN.caffemodel', caffe.TEST)
Run Code Online (Sandbox Code Playgroud)

prototxt文件是

name: "D-CNN"
input: "data"
input_dim: 10
input_dim: 3
input_dim: 259
input_dim: 259
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  convolution_param {
    num_output: 64
    kernel_size: 5
    stride: 2
  }
}
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1"
}
layer { …
Run Code Online (Sandbox Code Playgroud)

python machine-learning image-processing computer-vision caffe

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