我是pytorch和python的初学者,我一直在看一些代码示例和
我想知道在以下代码中使用d
:
def train_and_eval(self):
self.entity_idxs = {d.entities[i]:i for i in range(len(d.entities))}
self.relation_idxs = {d.relations[i]:i for i in range(len(d.relations))}
在d.entities [i]中,在定义d的代码之前,我什么都没看到。
那意味着什么?你能解释一下密码吗?我不知道我的问题是否明确,请询问是否需要额外的背景。
我也可以显示代码的开头:
class Experiment:
def __init__(self, learning_rate=0.0005, ent_vec_dim=200, rel_vec_dim=200,
num_iterations=500, batch_size=128, decay_rate=0., cuda=False,
input_dropout=0.3, hidden_dropout1=0.4, hidden_dropout2=0.5,
label_smoothing=0.):
self.learning_rate = learning_rate
self.ent_vec_dim = ent_vec_dim
self.rel_vec_dim = rel_vec_dim
self.num_iterations = num_iterations
self.batch_size = batch_size
self.decay_rate = decay_rate
self.label_smoothing = label_smoothing
self.cuda = cuda
self.kwargs = {"input_dropout": input_dropout, "hidden_dropout1": hidden_dropout1,
"hidden_dropout2": hidden_dropout2}
def get_data_idxs(self, data):
data_idxs = [(self.entity_idxs[data[i][0]], self.relation_idxs[data[i][1]], \
self.entity_idxs[data[i][2]]) for i in range(len(data))]
return data_idxs
您看到这里他们在类的第一个方法中使用self.entity_idxs
,并且在以后的任何地方都没有定义它。稍后在类中再次使用了它,这是我提供的第一个代码片段。