通常我_用来访问Python交互式shell中的最后一个结果.特别是为了快速将变量分配给结果,我认为以后可能会很重要.
我最近发现的是,如果我_在for循环中使用as作为一个值,我不能再用它_来引用最后的结果了.
例:
>>> for _ in range(10):
... pass
...
>>> 120
120
>>> a=_
>>> a
9
>>> _
9
>>> del _ # Now I can use _ to reference the last result again
>>> 120
120
>>> a=_
>>> a
120
Run Code Online (Sandbox Code Playgroud)
如果我使用空白for循环,那么_在我删除它之前不能被认为是最后的结果,然后它可以工作.
如果我列出理解虽然它似乎仍然工作正常:
>>> [1 for _ in range(10)]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> 120
120
>>> a=_
>>> a
120
Run Code Online (Sandbox Code Playgroud)
所以我猜我的问题是为什么?为什么会这样?为什么它 …
编辑:附加一些代码以帮助生成类似的结果(附加在末尾)
我有一个非常小的模型,其架构[2, 3, 6]中的隐藏层使用 ReLU,它是用于多类分类的 softmax 激活。离线训练并静态量化到 qint8。我现在想做的是提取权重,以便我可以通过矩阵乘法/加法在其他硬件上使用它们。我遇到的问题是它似乎没有按预期运行。以 state_dict() 的 GraphModule 输出为例:
OrderedDict([('input_layer_input_scale_0', tensor(0.0039)),
('input_layer_input_zero_point_0', tensor(0)),
('input_layer.scale', tensor(0.0297)),
('input_layer.zero_point', tensor(0)),
('input_layer._packed_params.dtype', torch.qint8),
('input_layer._packed_params._packed_params',
(tensor([[-0.1180, 0.1180],
[-0.2949, -0.5308],
[-3.3029, -7.5496]], size=(3, 2), dtype=torch.qint8,
quantization_scheme=torch.per_tensor_affine, scale=0.05898105353116989,
zero_point=0),
Parameter containing:
tensor([-0.4747, -0.3563, 7.7603], requires_grad=True))),
('out.scale', tensor(1.5963)),
('out.zero_point', tensor(243)),
('out._packed_params.dtype', torch.qint8),
('out._packed_params._packed_params',
(tensor([[ 0.4365, 0.4365, -55.4356],
[ 0.4365, 0.0000, 1.3095],
[ 0.4365, 0.0000, -13.9680],
[ 0.4365, -0.4365, 4.3650],
[ 0.4365, 0.4365, -3.0555],
[ 0.4365, 0.0000, -1.3095],
[ 0.4365, 0.0000, 3.0555]], size=(7, 3), …Run Code Online (Sandbox Code Playgroud) 现在我有一个图像处理算法,在 Python 中大约有 100 行左右。使用numpy,PIL和大约需要 500 毫秒scipy。我希望让它更快,并且由于实际算法到目前为止似乎已经非常优化,我想知道是否使用不同的方法,例如Cython会改善时间。我相信我可以做几件不同的事情:
numpy这种方式。numpy或那些模块,但仍然非常有效。我只是在这里寻找速度,而不是担心实施的难度。在这种情况下,是否有更好的选择,它们都是一样的,还是值得做?
因此,我在代码中找到了一个错误,可以复制以下内容。基本上我需要检查中的所有元素np.ndarray是否都不为0。
>>> a = np.ones((3,3))
>>> np.all(a == 0) == False
True
Run Code Online (Sandbox Code Playgroud)
好的,里面的所有值a都不为零。我知道我还可以做的np.all((a == 0) == False),而不是明确要求进行比较,以0,但我并没有在第一,这让我意识到有比较时的差异is,以==在False情况。
>>> np.all(a == 0) is False
False
Run Code Online (Sandbox Code Playgroud)
我知道is应该比较如果对象指向相同的对象。但这是否意味着我返回的两个值False实际上并不指向相同的值False?我可能只是在想这个...
我有一个FXML文件,我用它来允许用户输入请求.现在我只是把它放在一个新的阶段并且做到了Stage.show().我不希望它出现在一个新窗口中,表现得更像一个ContextMenu.
看看ContextMenu课程,似乎我不能根据FXML文件设置内容.有没有办法用ContextMenu或者Popup或其他一些我不知道的类来做到这一点?
如果我在C++ 11中有这样的话:
#include <iostream>
template <typename T1, typename T2>
auto add(T1 t1, T2 t2) -> decltype(t1 + t2)
{
decltype(t1 + t2) val = t1 + t2;
return val;
}
int main()
{
double a = 12.5;
int b = 4;
std::cout << add(a, b) << std::endl; // prints 16.5
}
Run Code Online (Sandbox Code Playgroud)
我可以返回一个可以由编译器自动确定的类型.
由于我是C++的新手并且目前需要在C++ 98中实现类似的东西,有谁知道我会怎么做?
我正在用 Java 创建一个小型音频播放器,可以很好地播放某些格式(例如 WAV)。我发现这是因为javax.sound不支持MP4。但根据我所读到的内容,从 MP4 转换为 WAV 是无损的,所以我相信这应该不会那么困难。我知道有很多第三方库可以做到这一点,但我对下载一个应该相当简单的东西不感兴趣。我研究了每个 ISO 的具体情况,试图了解数据是如何存储的,以便能够创建一个 ISO BufferedReader,并BufferedWritter查看是否可以手动转换它,但我无法找到我正在寻找的信息。在纯 Java 1.7.0 中执行此操作的方法是什么(我知道 JavaFX 有一个 MediaPlayer,但不幸的是我无法使用 1.8.0)。
或者如果有人知道我可以在哪里找到组成 MP4 和 WAV 的每个特定容器信息(例如标头大小/信息、数据、ACK/NACK 等)。
我有一个列表,大号和大字典,d包含键,ķ其中k是在一个特定密钥ķ.D [k]包含确定结果列表所需的一些信息.现在,我通过在每个值搜索ķ如果信息存在的价值给我,我追加k以大号.这是迭代的方式,但我希望我可以通过多线程加快速度.字典永远不会有更新.实现这个目标的好方法是什么?