Реализация ячейки LSTM с Tensorflow без использования tf.contrib - PullRequest
0 голосов
/ 04 июня 2018

Моя задача - реализовать базовую сеть LSTM для распознавания букв по данным датчика движения с телефона Android без использования каких-либо модулей из tf.contrib.Входные данные имеют форму (?, 150, 3) ->?: # Букв, 150: # значений, 3: x, y, z координаты.

Планируется построить LSTMСотовый и использовать оптимизатор Adam для настройки веса.Проблема в том, фт.LSTM выполняется до того, как я передаю данные в sess.run ().Как я могу предотвратить выполнение графика?Нужно ли помещать весь код в класс или есть другой способ?

Код

x = tf.placeholder(tf.float32, shape=[None, n_features * fixed_length_of_feed_array])
y_ = tf.placeholder(tf.float32, shape=[None, 5])

x_r = tf.reshape(x, [-1, fixed_length_of_feed_array, 3])

states = [tf.random_normal([hidden, hidden]), tf.random_normal([hidden, hidden])]


def LSTM_Cell(hidden, inputs, states):

    x_i = tf.add(tf.matmul(x_r, wx[:, :hidden]), bx[:, :hidden])
    x_f = tf.add(tf.matmul(x_r, wx[:, hidden:hidden * 2]), bx[:, hidden:hidden * 2])
    x_c = tf.add(tf.matmul(x_r, wx[:, hidden * 2:hidden * 3]), bx[:, hidden * 2:hidden * 3])
    x_o = tf.add(tf.matmul(x_r, wx[:, hidden * 3:]), bx[:, hidden * 3:])

    hi = tf.sigmoid(tf.concat([tf.matmul(states[0], wh[:, :hidden]), x_i], 1))
    hf = tf.sigmoid(tf.concat([tf.matmul(states[0], wh[:, hidden:hidden * 2]), x_f], 1))
    ho = tf.sigmoid(tf.concat([tf.matmul(states[0], wh[:, hidden * 2:hidden * 3]), x_o], 1))
    hc = tf.tanh(tf.concat([tf.matmul(states[0], wh[:, hidden * 3:]), x_c], 1))

    c = tf.multiply(hf, states[1]) + tf.multiply(hi, hc)
    h = tf.multiply(ho, tf.tanh(c))

    return h, c


def LSTM(hidden, inputs, states):

    arr_inputs = inputs.split()

    return LSTM_Cell(hidden, arr_inputs, states)


# pred
h, c = LSTM(hidden, x_r, states)
states[0], states[1] = h, c
y = tf.softmax(tf.add(tf.matmul(h, wy), by))

1 Ответ

0 голосов
/ 08 июня 2018

LSTM не выполняется до подачи данных с помощью session.run.Вместо этого ваш код на python выполняется и строит график, который оценивается только позже.

...