用一个简单的例子来看看 LSTM 在 tensorflow 里是如何做分类问题的。
这个例子特别简单,就是一个长度为 20 的二进制串,数出其中 1 的个数,简单到用一个 for 就能搞定的事情,来看看 LSTM 是如何做到的。
大家可以先在这里停一下,看看你有什么想法呢。
import numpy as np
from random import shuffle
input 一共有 2^20 种组合,就生成这么多的数据
train_input = ['{0:020b}'.format(i) for i in range(2**20)]
shuffle(train_input)
train_input = [map(int,i) for i in train_input]
train_input:
[1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0]
[0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1]
[0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1]
把每一个 input 转化成 tensor 的形式
在 dimensions = [batch_size, sequence_length, input_dimension]
中,
sequence_length = 20 and input_dimension = 1,
每个 input 变成了 A list of 20 lists
ti = []
for i in train_input:
temp_list = []
for j in i:
temp_list.append([j])
ti.append( np.array(temp_list) )
train_input = ti
train_input :
[[1][0][0][0][1][1][1][0][1][0][0][0][0][1][0][0][0][1][0][0]]
生成实际的 output 数据