小编Rya*_*cus的帖子

计算吸收马尔可夫链基本矩阵的最佳方法是什么?

我有一个非常大的吸收马尔可夫链(扩展到问题大小 - 从10个状态到数百万个)非常稀疏(大多数状态只能对4或5个其他状态作出反应).

我需要计算该链的基本矩阵的一行(给定一个起始状态的每个状态的平均频率).

通常,我会通过计算来做到这一点(I - Q)^(-1),但我找不到一个实现稀疏矩阵逆算法的好库!我已经看过几篇论文,其中大部分都是博士级的工作.

我的大部分Google结果都指向了一些帖子,讨论在解决线性(或非线性)方程组时如何不应该使用矩阵逆...我觉得这没有特别有用.基本矩阵的计算是否类似于求解方程组,我根本不知道如何以另一个的形式表达一个?

所以,我提出两个具体问题:

计算稀疏矩阵的逆的行(或所有行)的最佳方法是什么?

要么

计算大吸收马尔可夫链基本矩阵的最佳方法是什么?

一个Python解决方案会很精彩(因为我的项目目前仍然是一个概念验证),但是如果我不得不用一些好的'Fortran或C弄脏,那不是问题.

编辑:我刚刚意识到矩阵A的逆B可以定义为AB = I,其中I是单位矩阵.这可能会允许我使用一些标准的稀疏矩阵解算器来计算逆...我得赶紧走了,可以随意完成我的思路,我刚开始想可能只需要一个非常基本的矩阵属性...

python algorithm math markov-chains sparse-matrix

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

为什么这款Keras型号需要超过6GB的内存?

这个Keras模型似乎需要使用Tensorflow后端的6GB + RAM.我的背后数学建议存储权重不应超过500MB.这是怎么回事?

from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout, Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D

IMAGE_SIZE = 128
print('Build model...')
model = Sequential()
# three color channels, 128x128
# 16 con filters, 3 rows, 3 columns
model.add(Convolution2D(16, 3, 3, input_shape=(3, IMAGE_SIZE, IMAGE_SIZE)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(1))
model.add(Dense(3 * IMAGE_SIZE * IMAGE_SIZE))


model.compile(loss='mse', optimizer='sgd')
Run Code Online (Sandbox Code Playgroud)

它是一个连接到单个神经元的卷积层(16个3x3滤波器),然后该单个神经元连接到~50k神经元.

我对Keras很新,所以我想我的误解是非常基本的,但我似乎无法弄明白.

python neural-network keras

8
推荐指数
1
解决办法
4540
查看次数

Hadoop Counters文档?

我的MapReduce工作完成后,我得到了很多Counter信息:

File System Counters
                FILE: Number of bytes read=4386096368
                FILE: Number of bytes written=8805370803
                FILE: Number of read operations=0
                FILE: Number of large read operations=0
                FILE: Number of write operations=0
                HDFS: Number of bytes read=54583718086
                HDFS: Number of bytes written=4382090874
                HDFS: Number of read operations=1479
                HDFS: Number of large read operations=0
                HDFS: Number of write operations=2
        Job Counters
                Launched map tasks=369
                Launched reduce tasks=1
                Data-local map tasks=369
                Total time spent by all maps in occupied slots …
Run Code Online (Sandbox Code Playgroud)

counter hadoop

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

内存布局、对齐和释放

最近,我想分配一个u64与 128 字节边界对齐的 s 向量,以便我可以使用 AVX512F 函数。我第一次将函数复制Vec<u64>到对齐的Vec<u64>

fn copy_to_aligned(inp: Vec<u64>) -> Vec<u64> {
    // note: when the returned vec is freed, the alignment / layout information
    //       will be lost. The internal memory will be freed using the alignment
    //       of a u64.
    let aligned_layout = Layout::from_size_align(inp.len() * size_of::<u64>(), 128)
        .unwrap();
    let new_vec = unsafe {
        let new_vec_mem = alloc_zeroed(aligned_layout) as *mut u64;
        copy_nonoverlapping(inp.as_ptr(), new_vec_mem, inp.len());
        Vec::from_raw_parts(new_vec_mem, inp.len(), inp.len())
    };

    return new_vec;
}
Run Code Online (Sandbox Code Playgroud)

我现在意识到这段代码是错误的:虽然新向量是使用对齐的内存和适当的内容创建的,但当新向量被删除时, …

rust

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

在C++中,当我通过值将对象传递给函数时,是否会将对象复制到堆栈中?

我刚刚开始进入C++(我是一个经验丰富的Python/Java开发人员进入OpenCL的更好部分),我对如何将对象传递给函数感到困惑.

假设我有一个简单的类:

class Thing {
    int var;
    int var2;
    int var3;

    void doSomething();
};
Run Code Online (Sandbox Code Playgroud)

现在,这个类的"大小"至少是3*sizeof(int)(我不确定是否存储了函数指针).现在说我有两个功能签名:

void doThing1(Thing t);
void doThing2(Thing* t);
Run Code Online (Sandbox Code Playgroud)

当我调用时doThing1,是否会将整个实例复制到堆栈中?当我打电话时doThing2,它只需要sizeof(Thing*)堆栈空间吗?

互联网上的许多"传统智慧"一直在告诉我尝试使用功能签名doThing1,但乍一看似乎非常愚蠢 - 如果它确实复制了整个对象.

我还假设如果一个函数要修改堆上的对象(使用new关键字创建),它应该看起来像doThing1.

请纠正我的无知.要么我的Google搜索没有帮助,要么Google没有帮助.

c++

4
推荐指数
1
解决办法
164
查看次数

在Python中等效Haskell"until"

在Python中是否有任何与Haskelluntil函数相同的内置函数?

从本质上讲,until应用一个函数f来提供一个初始值v,然后应用ff(v),直到满足条件.换句话说,until返回重复应用的结果f直到条件成立.

我可以在Python中实现这一点,如下所示:

def until(cond, func, starting):
    val = starting
    while not cond(val):
        val = func(val)
    return val
Run Code Online (Sandbox Code Playgroud)

我应该使用这个实现,还是应该使用一些库函数?

python haskell functional-programming

0
推荐指数
1
解决办法
334
查看次数