import tensorflow as tf

    dim_state = int(np.prod(env.observation_space.shape))
    dim_action = int(np.prod(env.action_space.shape))

    env.verify()

    normalizers = Normalizers(dim_action=dim_action, dim_state=dim_state)
    normalizers_copy = Normalizers(dim_action=dim_action, dim_state=dim_state)
    normalizers_parameters = normalizers.parameters(trainable=False, non_trainable=True)
    normalizers_copy_parameters = normalizers_copy.parameters(trainable=False, non_trainable=True)
    copy_normalizers = tf.group(*[tf.assign(w_v, p_v) for w_v, p_v in zip(normalizers_copy_parameters, normalizers_parameters)])
    revert_normalizers = tf.group(*[tf.assign(w_v, p_v) for w_v, p_v in zip(normalizers_parameters, normalizers_copy_parameters)])

    dtype = gen_dtype(env, 'state action next_state reward done timeout')
    train_set = Dataset(dtype, FLAGS.rollout.max_buf_size)
    dev_set = Dataset(dtype, FLAGS.rollout.max_buf_size)
    task_train_sets = [Dataset(dtype, FLAGS.rollout.max_buf_size) for i in range(100)]
    task_dev_sets = [Dataset(dtype, FLAGS.rollout.max_buf_size) for i in range(100)]

    print ("state and action dim:", dim_state, dim_action)
    policy = GaussianMLPPolicy(dim_state, dim_action, normalizer=normalizers.state, **FLAGS.policy.as_dict())
