小编Jat*_*aki的帖子

`typing.NamedTuple` 子类中的 `super` 在 python 3.8 中失败

我的代码在 Python 3.6 中运行,但在 Python 3.8 中失败。似乎归结为调用super的子类typing.NamedTuple,如下所示:

<ipython-input-2-fea20b0178f3> in <module>
----> 1 class Test(typing.NamedTuple):
      2     a: int
      3     b: float
      4     def __repr__(self):
      5         return super(object, self).__repr__()

RuntimeError: __class__ not set defining 'Test' as <class '__main__.Test'>. Was __classcell__ propagated to type.__new__?
Run Code Online (Sandbox Code Playgroud)
In [3]: class Test(typing.NamedTuple): 
   ...:     a: int 
   ...:     b: float 
   ...:     #def __repr__(self): 
   ...:     #    return super(object, self).__repr__() 
   ...:                                                                         

>>> # works
Run Code Online (Sandbox Code Playgroud)

super(object, self).__repr__调用的目的是使用标准'<__main__.Test object at 0x7fa109953cf8>' __repr__而不是打印出元组元素的所有内容(默认情况下会发生这种情况)。有一些 关于导致类似错误的问题 …

python super python-3.6 python-3.8

11
推荐指数
2
解决办法
588
查看次数

> <numpy dtype中的符号是什么意思?

是什么区别dtype='f',dtype='f4',dtype='>f4',dtype'<f4'关于类型的文档中没有解释语法(除了'f'是'float32'的简写); 它广泛用于记录页面,但>/ 的含义<在那里也没有解释.

经过一些实验,我发现了这一点

    In [13]: a = np.array([1.0], dtype='f')
    In [15]: print(a.dtype)
    float32
Run Code Online (Sandbox Code Playgroud)

    In [16]: a = np.array([1.0], dtype='<f4')
    In [17]: print(a.dtype)
    float32
Run Code Online (Sandbox Code Playgroud)

    In [18]: a = np.array([1.0], dtype='>f4')
    In [19]: print(a.dtype)
    >f4
Run Code Online (Sandbox Code Playgroud)

它让我相信那些不等同,这可能是我对外部库所面临的问题的解释.

python types numpy

9
推荐指数
3
解决办法
3775
查看次数

PyTorch - 有效地应用注意力

我已经建立了一个注意力的RNN语言模型,我通过参加所有以前的隐藏状态(只有一个方向)为输入的每个元素创建上下文向量.

在我看来,最直接的解决方案是在RNN输出上使用for循环,这样每个上下文向量一个接一个地计算.

import torch
import torch.nn as nn
import torch.nn.functional as F

class RNN_LM(nn.Module):
    def __init__(self, hidden_size, vocab_size, embedding_dim=None, droprate=0.5):
        super().__init__()
        if not embedding_dim:
            embedding_dim = hidden_size
        self.embedding_matrix = nn.Embedding(vocab_size, embedding_dim)

        self.lstm = nn.LSTM(input_size=embedding_dim, hidden_size=hidden_size, batch_first=False)
        self.attn = nn.Linear(hidden_size, hidden_size)
        self.vocab_dist = nn.Linear(hidden_size, vocab_size)
        self.dropout = nn.Dropout(droprate)

    def forward(self, x):
        x = self.dropout(self.embedding_matrix(x.view(-1, 1)))
        x, states = self.lstm(x)
        #print(x.size())
        x = x.squeeze()
        content_vectors = [x[0].view(1, -1)]
        # for-loop over hidden states and attention
        for i in …
Run Code Online (Sandbox Code Playgroud)

python vectorization neural-network deep-learning pytorch

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

如何在 jupyter-lab 中启用 VIM 模式来编辑笔记本?

我是 jupyter 实验室的新手。在settings->text editor key map它有一个vim选项,当启用时,允许我.py使用 vim 风格的编辑器编辑文件。但是,此行为不会延续到.ipynb文件。如何为在 jupyter-lab 中编辑的所有文件启用此功能(最重要的是.ipynb)?

互联网搜索显示了大量用于 jupyter 的 vim 插件(我相信主要是 jupyter-notebook),但由于这种行为已经开箱即用.py,我认为这可以在没有第三方插件的情况下以某种方式进行配置。无论如何,我将感谢您提供信息,因为我在互联网上找到的内容似乎大多已过时/与 jupyter-notebook 相关。

jupyter-lab

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