小编One*_*Day的帖子

Python sklearn在训练期间显示损失值

我想在训练期间检查我的损失值,这样我就可以观察每次迭代时的损失.到目前为止,我还没有找到一个简单的方法让scikit学会给我一个损失值的历史,我也没有找到一个功能已经在scikit中为我绘制损失.

如果无法绘制这个,那么如果我可以简单地在classifier.fit的末尾获取最终的损失值,那就太好了.

注意:我知道某些解决方案是封闭的形式.我正在使用几个没有分析解决方案的分类器,例如逻辑回归和svm.

有没有人有什么建议?

python machine-learning scikit-learn

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

为什么程序级构造函数被`__libc_csu_init`调用而析构函数不被`__libc_csu_fini`调用?

这是一个简单的程序:

void __attribute__ ((constructor)) dumb_constructor(){}

void __attribute__ ((destructor)) dumb_destructor(){}

int main() {}
Run Code Online (Sandbox Code Playgroud)

我用以下标志编译它:

g++ -O0 -fverbose-asm -no-pie -g -o main main.cpp 
Run Code Online (Sandbox Code Playgroud)

我检查与gdb那个__libc_csu_init呼唤我标记瓦特/构造函数:

Breakpoint 1, dumb_constructor () at main.cpp:1
1   void __attribute__ ((constructor)) dumb_constructor(){}
(gdb) bt
#0  dumb_constructor () at main.cpp:1
#1  0x000000000040116d in __libc_csu_init ()
#2  0x00007ffff7abcfb0 in __libc_start_main () from /usr/lib/libc.so.6
#3  0x000000000040104e in _start ()
Run Code Online (Sandbox Code Playgroud)

我认为该destructor属性意味着dumb_destructor()将在 期间调用__libc_csu_fini,但这并没有发生:

Breakpoint 1, dumb_destructor () at main.cpp:3
3   void __attribute__ ((destructor)) dumb_destructor(){} …
Run Code Online (Sandbox Code Playgroud)

c++ assembly gdb libc objdump

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

无需打开浏览器即可进行gcloud身份验证?

要获取 gcloud 的 ADC(应用程序默认配置),我必须运行:

$ gcloud auth application-default login
Run Code Online (Sandbox Code Playgroud)

但是,它会弹出一个链接,告诉我的浏览器访问(由于工作中的权限限制,我无法访问)。

我通读了手册页,发现有一个名为 的标志--no-launch-browser。我尝试了一下,它仍然告诉我转到浏览器中的链接,然后是验证码。这有点用词不当,不是吗?

那么我该怎么做才能真正访问我的 gcloud ADC?

bash google-cloud-platform gcloud

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

C++ - 来自Kazushige的优化矩阵乘法Goto的论文在O3标志中的表现比天真更差

相关论文在这里.我试图重现Kazushige Goto的开创性论文,通过将其衰减到gepp(通用面板 - 面板)和gebp(通用块面板)乘法的子程序快速矩阵乘法,这显然是gemm的最快构建块.我编写了下面的代码来测试它并使用-O3标志,我看到我的代码的性能实际上比天真的矩阵乘法更糟糕:

(~0.5x increase)
Time elapsed : 3.82941 <-- naive
Time elapsed : 6.21072 <-- more complex gebp subroutine
Run Code Online (Sandbox Code Playgroud)

然而,没有-O3旗帜,我们看到速度确实比天真版本更快:

(~4x increase)
Time elapsed : 53.4537 <-- naive
Time elapsed : 15.603 <-- more complex gebp subroutine
Run Code Online (Sandbox Code Playgroud)

有了@ ztik的建议,我尝试了没有-mavx2 -O3标志,并添加-O2,显示类似的结果没有任何优化标志:

(~4x increase)
Time elapsed : 26.4217 <-- naive
Time elapsed : 6.42583 <-- more complex gebp subroutine
Run Code Online (Sandbox Code Playgroud)

我很清楚,-O3在gcc 中可以实现数以百计的优化标志,每个标志都会比复杂的Goto纸张变体更多地单独提高朴素方法的性能.然而,MKL,ATLAS等是使用Goto方法的一些着名的BLAS变体(并且比天真更快的数量级),尽管使用汇编内核而不是C++代码.

这是预期的,如果是这样,我怎样才能获得性能提升(除了必须编写自展开的程序集)?我是否只是编写了一些可怕的代码,其中包含某些不会滥用缓存的错误? …

c++ gcc blas matrix-multiplication

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

为什么python3.10中不允许这个解包表达式?

我曾经像这样解压一个长可迭代表达式:

在Python 3.8.7中:

>>> _, a, (*_), c = [1,2,3,4,5,6]
>>> a
2
>>> c
6
Run Code Online (Sandbox Code Playgroud)

在Python 3.10.7中:

>>> _, a, (*_), c = [1,2,3,4,5,6]
  File "<stdin>", line 1
    _, a, (*_), c = [1,2,3,4,5,6]
           ^^
SyntaxError: cannot use starred expression here
Run Code Online (Sandbox Code Playgroud)

我不确定 3.8.7 和 3.10.7 之间哪个版本的 python 引入了这种向后破坏行为。这样做的理由是什么?

python language-lawyer

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

Tensorflow可视化工具"Tensorboard"无法在Anaconda下工作

我目前正在使用张量流,我想要想象我正在编写的卷积神经网络的效果.但是,我不能使用张量板.我看到我的conda env下面的张量板为envs/tensorenv/bin/tensorboard(python文件).它导入了一个名为tensorflow.tensorboard.tensorboard的东西,它无法找到.

(tensorenv)wifi-131-179-39-186:TensorflowTutorial hongshuhong$ tensorboard --logdir=log/
Traceback (most recent call last):
  File "/Users/hongshuhong/anaconda/envs/tensorenv/bin/tensorboard", line 4, in <module>
    import tensorflow.tensorboard.tensorboard
ImportError: No module named 'tensorflow.tensorboard.tensorboard'
Run Code Online (Sandbox Code Playgroud)
  • 我试着寻找tensorflow.tensorboard.tensorboard,但我在目录中的任何地方都没有看到它.
  • 我在anaconda下使用Mac OSX的tensorflow发行版,使用python 3.5.1并使用anaconda的软件包.
  • 我正在使用ipython notebook作为convnet的代码.

任何帮助,将不胜感激.如果需要额外的信息,请告诉我,谢谢.

python ipython anaconda tensorflow tensorboard

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

Sphinx 从 autodoc 中删除数据类字段

正如本文所述,即使 napoleon 将字段添加为文档,autodoc 也会急切地将类变量添加到文档中:

from dataclasses import dataclass
@dataclass
class Foo():
    """Some class

    Attributes:
        a: foo
        b: bar
    """
    a: str
    b: int

    def c(self) -> int:
        """Here's a doc'd function
        """
        return 3
Run Code Online (Sandbox Code Playgroud)

我想明确告诉 autodoc 不要记录任何类变量(在数据类的情况下也是实例变量) - 我只希望 autodoc 显示给定类的声明函数并让 napoleon 处理它的所有类的类/实例变量发现. 这是否可以在没有:exclude-members:每堂课的情况下实现(这是一个巨大的麻烦)?

我已经尝试过:

autodoc_default_options = {
    'members':          True,
    'undoc-members':    False,
}
Run Code Online (Sandbox Code Playgroud)

在我的conf.py文件中.rst

.. automodule:: some.module
    :members:
    :show-inheritance:
Run Code Online (Sandbox Code Playgroud)

这应该隐藏无证成员,但他们仍然出现:

在此输入图像描述

python docstring python-sphinx autodoc sphinx-napoleon

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

新的 PyYAML 版本在大多数自定义 python 对象上中断 - RepresenterError

大约 5 小时前,版本4.1.0发布。它打破了我的单元测试。这是一个干净的 MVCE 显示:

3.12 版:

>>> import numpy as np
>>> import yaml
>>> x = np.int64(2)
>>> yaml.dump(x, Dumper=yaml.Dumper)
'!!python/object/apply:numpy.core.multiarray.scalar\n- !!python/object/apply:numpy.dtype\n  args: [i8, 0, 1]\n  state: !!python/tuple [3, <, null, null, null, -1, -1, 0]\n- !!binary |\n  AgAAAAAAAAA=\n'
Run Code Online (Sandbox Code Playgroud)

4.1.0 版

>>> import numpy as np
>>> import yaml
>>> x = np.int64(2)
>>> yaml.dump(x, Dumper=yaml.Dumper)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/foo/anaconda3/envs/bar/lib/python3.6/site-packages/yaml/__init__.py", line 217, in dump
    return dump_all([data], …
Run Code Online (Sandbox Code Playgroud)

python yaml pyyaml

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

带箭头符号的C++模板自动返回类型需要decltype吗?

C++ 11为函数中的返回类型引入了箭头符号(不知道名称):

template <typename T>
auto fun(T&& a) -> decltype(bar(a)){ ... }
Run Code Online (Sandbox Code Playgroud)

但是根据scott meyer的说法,使用auto作为返回类型本身将删除所有const和引用限定符(因为它遵循与模板推导相同的模式),因此惯用的方法是decltype(auto)将所有限定符保持在类型之上.

但是,在这种背景下,auto推断是decltype(bar(a))?那会decltype(auto)decltype(decltype(bar(a)))吗?这会多余吗?

c++ templates c++14

4
推荐指数
2
解决办法
726
查看次数

跳过/删除 ELF 文件中的“PHDR”程序头可执行文件是否可以?如果是这样,为什么?

我正在对这个简单的 C++ 程序的二进制文件进行一些修改,以了解 ELF 的程序头:

\n\n
int main(){ }\n
Run Code Online (Sandbox Code Playgroud)\n\n

编译为:

\n\n
\xe2\x9d\xaf make\ng++ -O0 -fverbose-asm -no-pie -o main main.cpp\n
Run Code Online (Sandbox Code Playgroud)\n\n

我曾经readelf -l main得到以下信息:

\n\n
Elf file type is EXEC (Executable file)\nEntry point 0x401020\nThere are 11 program headers, starting at offset 64\n\nProgram Headers:\n  Type           Offset             VirtAddr           PhysAddr\n                 FileSiz            MemSiz              Flags  Align\n  PHDR           0x0000000000000040 0x0000000000400040 0x0000000000400040\n                 0x0000000000000268 0x0000000000000268  R      0x8\n  INTERP         0x00000000000002a8 0x00000000004002a8 0x00000000004002a8\n                 0x000000000000001c 0x000000000000001c  R      0x1\n      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]\n  LOAD           0x0000000000000000 0x0000000000400000 0x0000000000400000\n                 0x00000000000004c0 0x00000000000004c0  R …
Run Code Online (Sandbox Code Playgroud)

c c++ elf readelf

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