def test_default_encoder_factory(observation_shape, action_size, discrete_action): factory = DefaultEncoderFactory() # test state encoder encoder = factory.create(observation_shape) if len(observation_shape) == 3: assert isinstance(encoder, PixelEncoder) else: assert isinstance(encoder, VectorEncoder) # test state-action encoder encoder = factory.create_with_action(observation_shape, action_size, discrete_action) if len(observation_shape) == 3: assert isinstance(encoder, PixelEncoderWithAction) else: assert isinstance(encoder, VectorEncoderWithAction) assert encoder._discrete_action == discrete_action # test get_params assert factory.get_type() == "default" params = factory.get_params() new_factory = DefaultEncoderFactory(**params) assert new_factory.get_params() == params
DummyScaler, DummyActionScaler, ) @pytest.mark.parametrize("observation_shape", [(100, ), (4, 84, 84)]) @pytest.mark.parametrize("action_size", [2]) @pytest.mark.parametrize("actor_learning_rate", [1e-3]) @pytest.mark.parametrize("critic_learning_rate", [1e-3]) @pytest.mark.parametrize("temp_learning_rate", [1e-3]) @pytest.mark.parametrize("alpha_learning_rate", [1e-3]) @pytest.mark.parametrize("actor_optim_factory", [AdamFactory()]) @pytest.mark.parametrize("critic_optim_factory", [AdamFactory()]) @pytest.mark.parametrize("temp_optim_factory", [AdamFactory()]) @pytest.mark.parametrize("alpha_optim_factory", [AdamFactory()]) @pytest.mark.parametrize("encoder_factory", [DefaultEncoderFactory()]) @pytest.mark.parametrize("q_func_factory", ["mean", "qr", "iqn", "fqf"]) @pytest.mark.parametrize("gamma", [0.99]) @pytest.mark.parametrize("tau", [0.05]) @pytest.mark.parametrize("n_critics", [2]) @pytest.mark.parametrize("bootstrap", [False]) @pytest.mark.parametrize("share_encoder", [False, True]) @pytest.mark.parametrize("initial_temperature", [1.0]) @pytest.mark.parametrize("initial_alpha", [5.0]) @pytest.mark.parametrize("alpha_threshold", [10.0]) @pytest.mark.parametrize("n_action_samples", [10]) @pytest.mark.parametrize("soft_q_backup", [True]) @pytest.mark.parametrize("scaler", [None, DummyScaler()]) @pytest.mark.parametrize("action_scaler", [None, DummyActionScaler()]) @pytest.mark.parametrize("augmentation", [DrQPipeline()]) def test_cql_impl(
from d3rlpy.argument_utility import ( check_action_scaler, check_encoder, check_q_func, check_scaler, check_use_gpu, ) from d3rlpy.gpu import Device from d3rlpy.models.encoders import DefaultEncoderFactory from d3rlpy.models.q_functions import MeanQFunctionFactory from d3rlpy.preprocessing.action_scalers import MinMaxActionScaler from d3rlpy.preprocessing.scalers import MinMaxScaler @pytest.mark.parametrize("value", ["default", DefaultEncoderFactory()]) def test_check_encoder(value): assert isinstance(check_encoder(value), DefaultEncoderFactory) @pytest.mark.parametrize("value", ["mean", MeanQFunctionFactory()]) def test_check_q_func(value): assert isinstance(check_q_func(value), MeanQFunctionFactory) @pytest.mark.parametrize("value", ["min_max", MinMaxScaler(), None]) def test_check_scaler(value): scaler = check_scaler(value) if value is None: assert scaler is None else: