Изменения

Перейти к: навигация, поиск

Рекурсивные нейронные сети

235 байт добавлено, 19:18, 13 апреля 2020
Примеры кода
def __init__(self, word2index, hidden_size, output_size):
super(RNTN,self).__init__()
<font color="green"># Для рекурсивной нейронной сети обязательно нужно для векторное представление слов</font>
self.word2index = word2index
self.embed = nn.Embedding(len(word2index), hidden_size)
self.V = nn.ParameterList([nn.Parameter(torch.randn(hidden_size * 2, hidden_size * 2)) for _ in range(hidden_size)]) <font color="green"># Тензор</font>
self.W = nn.Parameter(torch.randn(hidden_size * 2, hidden_size))
self.b = nn.Parameter(torch.randn(1, hidden_size)) <font color="green"># bias</font>
self.W_out = nn.Linear(hidden_size, output_size)
<font color="green"># инициализация весов</font>
def init_weight(self):
nn.init.xavier_uniform(self.embed.state_dict()['weight'])
self.b.data.fill_(0)
<font color="green"># прямое распространение</font>
def tree_propagation(self, node):
recursive_tensor = OrderedDict()
recursive_tensor.update(self.tree_propagation(node.right))
concated = torch.cat([recursive_tensor[node.left], recursive_tensor[node.right]], 1) <font color="green"># 1x2D</font>
xVx = []
for i, v in enumerate(self.V):
recursive_tensor[node] = current
return recursive_tensor
def forward(self, Trees, root_only=False):
propagated = []
if RESCHEDULED == False and epoch == EPOCH // 2:
LR *= 0.1
optimizer = optim.Adam(model.parameters(), lr=LR, weight_decay=LAMBDA) <font color="green"># L2 normнормализация</font>
RESCHEDULED = True
for i, batch in enumerate(getBatch(BATCH_SIZE, train_data)):

Навигация