我想在训练期间检查我的损失值,这样我就可以观察每次迭代时的损失.到目前为止,我还没有找到一个简单的方法让scikit学会给我一个损失值的历史,我也没有找到一个功能已经在scikit中为我绘制损失.
如果无法绘制这个,那么如果我可以简单地在classifier.fit的末尾获取最终的损失值,那就太好了.
注意:我知道某些解决方案是封闭的形式.我正在使用几个没有分析解决方案的分类器,例如逻辑回归和svm.
有没有人有什么建议?
这是一个简单的程序:
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) 要获取 gcloud 的 ADC(应用程序默认配置),我必须运行:
$ gcloud auth application-default login
Run Code Online (Sandbox Code Playgroud)
但是,它会弹出一个链接,告诉我的浏览器访问(由于工作中的权限限制,我无法访问)。
我通读了手册页,发现有一个名为 的标志--no-launch-browser
。我尝试了一下,它仍然告诉我转到浏览器中的链接,然后是验证码。这有点用词不当,不是吗?
那么我该怎么做才能真正访问我的 gcloud ADC?
相关论文在这里.我试图重现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++代码.
这是预期的,如果是这样,我怎样才能获得性能提升(除了必须编写自展开的程序集)?我是否只是编写了一些可怕的代码,其中包含某些不会滥用缓存的错误? …
我曾经像这样解压一个长可迭代表达式:
在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 引入了这种向后破坏行为。这样做的理由是什么?
我目前正在使用张量流,我想要想象我正在编写的卷积神经网络的效果.但是,我不能使用张量板.我看到我的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)
任何帮助,将不胜感激.如果需要额外的信息,请告诉我,谢谢.
正如本文所述,即使 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)
这应该隐藏无证成员,但他们仍然出现:
大约 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) 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++ 程序的二进制文件进行一些修改,以了解 ELF 的程序头:
\n\nint 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
得到以下信息:
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)