计算图要变动. 最典型的例子就是 RNN, 有时候 RNN 的 time step 不会一样, 或者在 training 和 testing 的时候, batch_size 和
time_step 也不一样, 如果用一个动态计算图的 Torch, 我们就好理解多了, 写起来也简单多了.
动态RNN(其他代码同rnn回归)
#!!!!!!!!!!修改部分!!!!!!!!!!
for step in range(100):
dynamic_steps = np.random.randint(1, 4) # 随机 time step 长度
start, end = step * np.pi, (step+ dynamic_steps)*np.pi # time steps 都是一样长的
# sin 预测 cos
step += dynamic_steps
steps = np.linspace(start, end, 10 * dynamic_steps, dtype=np.float32)
print(len(steps)) # print how many time step feed to RNN
####################### 这下面又一样了 ###########################
x_np = np.sin(steps) # float32 for converting torch FloatTensor
y_np = np.cos(steps)
...
10
30
30
30
10
20
10
30..