def _test_call(self, gpu):
# This method only check if a given model can receive random input
# data and return output data with the correct interface.
nonlinearity = getattr(F, self.nonlinearity)
min_action = np.full((self.action_size,), -0.01, dtype=np.float32)
max_action = np.full((self.action_size,), 0.01, dtype=np.float32)
model = self._make_model(
n_input_channels=self.n_input_channels,
action_size=self.action_size,
bound_action=self.bound_action,
min_action=min_action,
max_action=max_action,
nonlinearity=nonlinearity,
)
batch_size = 7
x = np.random.rand(
batch_size, self.n_input_channels).astype(np.float32)
if gpu >= 0:
model.to_gpu(gpu)
x = chainer.cuda.to_gpu(x)
min_action = chainer.cuda.to_gpu(min_action)
max_action = chainer.cuda.to_gpu(max_action)
y = model(x)
self.assertTrue(isinstance(
y, chainerrl.distribution.ContinuousDeterministicDistribution))
a = y.sample()
self.assertTrue(isinstance(a, chainer.Variable))
self.assertEqual(a.shape, (batch_size, self.action_size))
self.assertEqual(chainer.cuda.get_array_module(a),
chainer.cuda.get_array_module(x))
if self.bound_action:
self.assertTrue((a.data <= max_action).all())
self.assertTrue((a.data >= min_action).all())
评论列表
文章目录