Tensorflow: низкоуровневая реализация LSTM

Я не вижу, чтобы данные очищали оба листа. вы можете использовать этот код

Sub LookUpTable()

'Declare Variables'

Dim Rng As Range
Dim VarArr As Variant
Dim i As Long

Dim BedPre As String
Dim BedSuf As String
Dim HISPre As String
Dim HISSuf As String
Dim ID As String
Dim Bed As String
Dim HIS As String
Dim NextRow As Long

'Assign cell values to variables'
With Sheets("Sheet1")
    BedPre = Range("A2").Value
    BedSuf = Range("B2").Value
    HISPre = Range("D2").Value
    HISSuf = Range("E2").Value
    ID = Range("F2").Value
    Set Rng = .Range("C2")
End With
NextRow = Sheets("Sheet2").Cells(Sheets("Sheet2").Rows.Count, "A").End(xlUp).Offset(1, 0).Row
If InStr(Rng, ",") > 0 Then
    VarArr = Split(Rng, ",")
    For i = 0 To UBound(VarArr)
        Bed = BedPre & Trim(VarArr(i)) & BedSuf
        HIS = HISPre & Trim(VarArr(i)) & HISSuf
        NextRow = NextRow + 1
        Sheets("Sheet2").Cells(NextRow, 1) = Bed
        Sheets("Sheet2").Cells(NextRow, 2) = HIS
        Sheets("Sheet2").Cells(NextRow, 3) = ID
    Next
End If
Sheets("Sheet1").Range("A2:F2").ClearContents
End Sub

1
задан Samuel 20 January 2019 в 09:27
поделиться

1 ответ

1) Использование tf.scan

Реализация RNN на низком уровне может быть достигнута с помощью функции tf.scan . Например, для SimpleRNN реализация будет похожа на:

# our RNN variables
Wx = tf.get_variable(name='Wx', shape=[embedding_size, rnn_size])
Wh = tf.get_variable(name='Wh', shape=[rnn_size, rnn_size])
bias_rnn = tf.get_variable(name='brnn', initializer=tf.zeros([rnn_size]))


# single step in RNN
# simpleRNN formula is `tanh(WX+WH)`
def rnn_step(prev_hidden_state, x):
    return tf.tanh(tf.matmul(x, Wx) + tf.matmul(prev_hidden_state, Wh) + bias_rnn)

# our unroll function
# notice that our inputs should be transpose
hidden_states = tf.scan(fn=rnn_step,
                        elems=tf.transpose(embed, perm=[1, 0, 2]),
                        initializer=tf.zeros([batch_size, rnn_size]))

# covert to previous shape
outputs = tf.transpose(hidden_states, perm=[1, 0, 2])

# extract last hidden
last_rnn_output = outputs[:, -1, :]

См. Полный пример здесь .

2) Использование AutoGraph

tf.scan - это цикл for, в котором вы можете реализовать его Auto-graph API:

from tensorflow.python import autograph as ag

@ag.convert()
def f(x):
# ...
for ch in chars:
      cell_output, (state, output) = cell.call(ch, (state, output))
      hidden_outputs.append(cell_output)
hidden_outputs = autograph.stack(hidden_outputs)
# ...

См. Полный текст пример с автографом API здесь .

3) Реализация в Numpy

Если вам все еще нужно углубиться внутрь, чтобы реализовать RNN, см. это руководство , в котором RNN реализуется с numpy.

4) Пользовательская RNN-ячейка в Керасе

См. здесь .

0
ответ дан Amir 20 January 2019 в 09:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: