小编Max*_*axB的帖子

为什么scikit-learn的随机森林使用了如此多的内存?

我正在使用scikit的Random Forest实现:

sklearn.ensemble.RandomForestClassifier(n_estimators=100, 
                                        max_features="auto", 
                                        max_depth=10)
Run Code Online (Sandbox Code Playgroud)

调用之后rf.fit(...),进程的内存使用量增加了80MB,或者每棵树增加了0.8MB(我还尝试了许多其他类似结果的设置.我使用toppsutil监视内存使用情况)

深度为10的二叉树最多应该有一个2^11-1 = 2047元素,这些元素都可以存储在一个密集的数组中,这样程序员就可以轻松地找到任何给定元素的父元素和子元素.

每个元素都需要分割和截止中使用的特征的索引,或6-16个字节,具体取决于程序员的经济程度.在我的情况下,这转化为每棵树0.01-0.03MB.

为什么scikit的实现使用20-60x的内存来存储随机森林的树?

classification machine-learning decision-tree random-forest scikit-learn

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

别名"const restrict"指针参数是否合法?

如果dot_product声明为

float dot_product(const float* restrict a, const float* restrict b, unsigned n);
Run Code Online (Sandbox Code Playgroud)

会打电话给

dot_product(x, x, x_len)
Run Code Online (Sandbox Code Playgroud)

根据C99标准,"未定义"?

编辑

x是一个指针,当然,指向sizeof(float) * x_len内存的字节,x_lenunsigned.这个问题是关于别名的.

c pointers c99 pointer-aliasing restrict-qualifier

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

Docker 中的主机-来宾操作系统版本兼容性是否有限制?

Docker 允许主机 Linux 发行版与来宾 Linux 发行版不同。

这种兼容性有限制吗?您能否在内核较旧的主机上运行最近的 Ubuntu 客户机?

linux-kernel docker

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

如何在 IntelliJ/Kotlin 中设置序列化?

对于菜鸟问题​​,我深表歉意:我正在尝试检查序列化在 Kotlin 中的工作原理。

为此,我创建了一个如下的 Gradle 项目:

在此输入图像描述

build.gradle.kts通过仅添加一行编辑生成的

plugins {
    java
    kotlin("jvm") version "1.3.71"
    id("org.jetbrains.kotlin.plugin.serialization") version "1.3.71"
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    testCompile("junit", "junit", "4.12")
}

configure<JavaPluginConvention> {
    sourceCompatibility = JavaVersion.VERSION_1_8
}
tasks {
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
}
Run Code Online (Sandbox Code Playgroud)

并创建了这个 Kotlin 源文件:

import kotlinx.serialization.*
import kotlinx.serialization.json.*

@Serializable
data class Data(val a: Int, val b: String = "42")
Run Code Online (Sandbox Code Playgroud)

但是当我构建这个项目时,我收到此错误:

Unresolved reference: kotlinx
Run Code Online (Sandbox Code Playgroud)

如果我删除前两行有问题的行,则会收到此错误:

Cannot …
Run Code Online (Sandbox Code Playgroud)

intellij-idea gradle kotlin

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

x86-64 上浮点 CPU 运算的重现性如何?

注意:这个问题是关于CPU指令的,而不是高级语言(你受编译器的支配)


来自一个流行的答案

相同的浮点运算,在相同的硬件上运行,总是产生相同的结果。

我们能否在 x86-64 上做出更有力的保证?如果硬件有点不同怎么?CPU 指令可以在同一系列 CPU 中重现吗?再现性的边界在哪里?

floating-point x86 assembly x86-64 ieee-754

6
推荐指数
0
解决办法
227
查看次数

Python和冲突的模块名称

似乎如果一个文件被调用io.py并且它被导入scipy.ndimage,后者在某种程度上最终无法找到它自己的子模块,也被称为io:

$ echo "import scipy.ndimage" > io.py
$ python io.py 
Traceback (most recent call last):
  File "io.py", line 1, in <module>
    import scipy.ndimage
  File "/usr/lib/python2.7/dist-packages/scipy/__init__.py", line 70, in <module>
    from numpy import show_config as show_numpy_config
  File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 153, in <module>
    from . import add_newdocs
  File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 22, in <module>
    from .npyio import *
  File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 4, in <module>
    from . import …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

5
推荐指数
2
解决办法
1013
查看次数

如何在未排序数组或其段中找到第 k 个最小元素?

Rust 是否具有在数组或数组段中查找第k个最小元素的函数?

(类似于std::nth_element在 C++ 中)

arrays rust

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

如何在 TensorBoard 中显示每个节点的内存?

在另一个问题中,有人展示了他的 TensorBoard 的屏幕截图,显示了每个节点的内存使用情况:

在此处输入图片说明

我在 Tensorboard 的实验中从未见过这些。我所做的就是打电话

writer = tf.summary.FileWriter('/tmp/tensorboard', sess.graph)
Run Code Online (Sandbox Code Playgroud)

之后sess.run()。也许我需要添加一些“摘要”来记录内存使用情况?

tensorflow tensorboard

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

numpy:如何使用argmax结果获取实际最大值?

假设我有一个3D数组:

>>> a
array([[[7, 0],
        [3, 6]],

       [[2, 4],
        [5, 1]]])
Run Code Online (Sandbox Code Playgroud)

我可以得到它argmax一起axis=1使用

>>> m = np.argmax(a, axis=1)
>>> m
array([[0, 1],
       [1, 0]])
Run Code Online (Sandbox Code Playgroud)

我如何才能m用作in的索引a,以便结果等同于简单地使用max

>>> a.max(axis=1)
array([[7, 6],
       [5, 4]])
Run Code Online (Sandbox Code Playgroud)

(这m适用于相同形状的其他数组时)

python numpy

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

如何动态选择卷积步幅?

如何动态选择卷积步幅?

使用占位符似乎不起作用:

s = tf.placeholder(np.int32)
image = tf.placeholder(np.float32, [None, 3, 32, 32])
tf.layers.conv2d(image,
                 filters=32,
                 kernel_size=[3, 3],
                 strides=[s, s],
                 padding='same',
                 data_format='channels_first')
Run Code Online (Sandbox Code Playgroud)

这给了一个TypeError.

类似的困难出现与pool_sizestrides做池时.

tensorflow

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