|
|
@ -47,8 +47,10 @@ class TestRNNOp(OpTest):
|
|
|
|
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
def setUp(self):
|
|
|
|
self.op_type = "rnn"
|
|
|
|
self.op_type = "rnn"
|
|
|
|
self.dtype = np.float64
|
|
|
|
self.dtype = np.float32 if core.is_compiled_with_rocm() else np.float64
|
|
|
|
self.sequence_length = np.array([12, 11, 10, 9, 8], dtype=np.int32)
|
|
|
|
self.sequence_length = None if core.is_compiled_with_rocm(
|
|
|
|
|
|
|
|
) else np.array(
|
|
|
|
|
|
|
|
[12, 11, 10, 9, 8], dtype=np.int32)
|
|
|
|
self.num_layers = 1
|
|
|
|
self.num_layers = 1
|
|
|
|
self.is_bidirec = False
|
|
|
|
self.is_bidirec = False
|
|
|
|
self.mode = "LSTM"
|
|
|
|
self.mode = "LSTM"
|
|
|
@ -78,12 +80,31 @@ class TestRNNOp(OpTest):
|
|
|
|
num_layers=self.num_layers,
|
|
|
|
num_layers=self.num_layers,
|
|
|
|
time_major=True,
|
|
|
|
time_major=True,
|
|
|
|
direction=direction,
|
|
|
|
direction=direction,
|
|
|
|
dropout=self.dropout)
|
|
|
|
dropout=self.dropout,
|
|
|
|
|
|
|
|
dtype=self.dtype)
|
|
|
|
|
|
|
|
|
|
|
|
flat_w = get_params_for_net(rnn1)
|
|
|
|
flat_w = get_params_for_net(rnn1)
|
|
|
|
output, (last_hidden, last_cell) = rnn1(
|
|
|
|
output, (last_hidden, last_cell) = rnn1(
|
|
|
|
input, sequence_length=self.sequence_length)
|
|
|
|
input, sequence_length=self.sequence_length)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if core.is_compiled_with_rocm():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def rocm_rnn_get_place():
|
|
|
|
|
|
|
|
places = [core.CUDAPlace(0)]
|
|
|
|
|
|
|
|
return places
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self._get_places = rocm_rnn_get_place
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if self.is_bidirec:
|
|
|
|
|
|
|
|
for i in range(0, len(flat_w), 4):
|
|
|
|
|
|
|
|
flat_w[i + 1], flat_w[i + 2] = flat_w[i + 2], flat_w[i + 1]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for i in range(len(flat_w)):
|
|
|
|
|
|
|
|
w = np.split(flat_w[i][1], 4, 0)
|
|
|
|
|
|
|
|
w = [w[0], w[1], w[3], w[2]]
|
|
|
|
|
|
|
|
w = np.concatenate(w)
|
|
|
|
|
|
|
|
flat_w[i] = (flat_w[i][0], w)
|
|
|
|
|
|
|
|
|
|
|
|
init_h = np.zeros((self.num_layers * self.direction_num, batch_size,
|
|
|
|
init_h = np.zeros((self.num_layers * self.direction_num, batch_size,
|
|
|
|
hidden_size)).astype(self.dtype)
|
|
|
|
hidden_size)).astype(self.dtype)
|
|
|
|
init_c = np.zeros((self.num_layers * self.direction_num, batch_size,
|
|
|
|
init_c = np.zeros((self.num_layers * self.direction_num, batch_size,
|
|
|
|