LSTM Eingänge für Tensorflow
Ich versuche, ein LSTM-Netzwerk in Tensorflow zu erstellen, und habe mich in Terminologie / Grundlagen verirrt. Ich haben Zeitreihenbeispiele soX=xn, woxi = [[x11x12, x13], ..., [xm1xm2, xm3]] und wo xii ist ein Schwimmer. Zunächst möchte ich ein Modell trainieren, das den Beginn einer Sequenz angibt ([x11x12, x13]) Ich kann den Rest der Sequenz vorhersagen. Ich hoffe, dass ich später einen Klassifikator einbinden kann, um vorherzusagen, welche Binärklasse jeweils @ isxi gehört
So ist mein Problem, was ich zum Anfang einspeisen und das Ende meines Modells herausziehen? Bisher habe ich etwas, das wie folgt aussieht
class ETLSTM(object):
"""docstring for ETLSTM"""
def __init__(self, isTraining, config):
super(ETLSTM, self).__init__()
# This needs to be tidied
self.batchSize = batchSize = config.batchSize
self.numSteps = numSteps = config.numSteps
self.numInputs = numInputs = config.numInputs
self.numLayers = numLayers = config.numLayers
lstmSize = config.lstm_size
DORate = config.keep_prob
self.input_data = tf.placeholder(tf.float32, [batchSize, numSteps,
numInputs])
self.targets = tf.placeholder(tf.float32, [batchSize, numSteps,
numInputs])
lstmCell = rnn_cell.BasicLSTMCell(lstmSize, forgetbias=0.0)
if(isTraining and DORate < 1):
lstmCell = tf.nn.rnn_cell.DropoutWrapper(lstmCell,
output_keep_prob=DORate)
cell = tf.nn.rnn_cell.MultiRNNCell([lstmCell]*numLayers)
self._initial_state = cell.zero_state(batchSize, tf.float32)
# This won't work with my data, need to find what goes in...
with tf.device("/cpu:0"):
embedding = tf.get_variable("embedding", [vocab_size, size])
inputs = tf.nn.embedding_lookup(embedding, self._input_data)
if(isTraining and DORate < 1):
inputs = tf.nn.dropout(inputs, DORate)
BEARBEITE: Wie beende ich das__init__
Funktion damit es mit meinen Daten kompatibel ist?