Generate_x_y_data_v1()函数理解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def generate_x_y_data_v1(isTrain, batch_size):
# """
# 练习数据1。
#      返回:元组(X,Y)
#          X是从0.0 * pi到1.5 * pi的正弦和余弦
#          Y是从1.5 * pi到3.0 * pi的正弦和余弦
#      因此,Y跟随X.还有一个通常应用于X和Y的随机偏移。

#      返回的数组具有以下形状:(seq_length,batch_size,output_dim)
# 因此:(10,batch_size,2)
#      对于本练习,让我们忽略“isTrain”
#      论证和测试相同的数据。
# """
seq_length = 3
batch_size = 3

batch_x = []
batch_y = []
for _ in range(batch_size):
rand = random.random() * 2 * math.pi

sig1 = np.sin(np.linspace(0.0 * math.pi + rand,
3.0 * math.pi + rand, seq_length * 2))
print(_)
print(sig1)
sig2 = np.cos(np.linspace(0.0 * math.pi + rand,
3.0 * math.pi + rand, seq_length * 2))
x1 = sig1[:seq_length]
y1 = sig1[seq_length:]
x2 = sig2[:seq_length]
y2 = sig2[seq_length:]

x_ = np.array([x1, x2])
y_ = np.array([y1, y2])
x_, y_ = x_.T, y_.T

batch_x.append(x_)
batch_y.append(y_)

batch_x = np.array(batch_x)
batch_y = np.array(batch_y)
# shape: (batch_size, seq_length, output_dim)

batch_x = np.array(batch_x).transpose((1, 0, 2))
batch_y = np.array(batch_y).transpose((1, 0, 2))
# shape: (seq_length, batch_size, output_dim)

return batch_x, batch_y

sig1 是ndarray类型,长度为seq_length*2 , 主要np.linspace()函数。

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

sig2 和sig1 一样的思路
x1 y1 是对sig1的截取,分别取前半段和后半段
x2 y2 是对sig2的截取,分别取前半段和后半段

batch_x 就是x1 x2 形成的矩阵。
batch_y 就是y1 y2 形成的矩阵。

batch_x.shape = (seq_length, batch_size,2)

有seq_length个样本,每个样本的维度 (batch_size,2)

span-english

  1. preprocessing data
  2. build model
  3. 1 encoder
  4. 2 Attention
  5. 3 decoder
  6. evaluation
  7. 1 given sentence, return translated results
  8. 2 visualize results(attention)