我的代码在 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__而不是打印出元组元素的所有内容(默认情况下会发生这种情况)。有一些 关于导致类似错误的问题 …
是什么区别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)
它让我相信那些不等同,这可能是我对外部库所面临的问题的解释.
我已经建立了一个注意力的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) 我是 jupyter 实验室的新手。在settings->text editor key map它有一个vim选项,当启用时,允许我.py使用 vim 风格的编辑器编辑文件。但是,此行为不会延续到.ipynb文件。如何为在 jupyter-lab 中编辑的所有文件启用此功能(最重要的是.ipynb)?
互联网搜索显示了大量用于 jupyter 的 vim 插件(我相信主要是 jupyter-notebook),但由于这种行为已经开箱即用.py,我认为这可以在没有第三方插件的情况下以某种方式进行配置。无论如何,我将感谢您提供信息,因为我在互联网上找到的内容似乎大多已过时/与 jupyter-notebook 相关。