Esempio n. 1
0
    def setUp(self):
        def myhelper(model, val=-1):
            return val

        if not brew.has_helper(myhelper):
            brew.Register(myhelper)
        self.myhelper = myhelper

        def myhelper2(model, val=-1):
            return val

        if not brew.has_helper(myhelper2):
            brew.Register(myhelper2)
        self.myhelper2 = myhelper2
Esempio n. 2
0
    def __init__(
        self,
        name: str,
        cnn_parameters: CNNParameters,
    ) -> None:
        """

        :param name: A unique name for this trainer used to create the data on the
            caffe2 workspace
        :param parameters: The set of training parameters
        """

        if not CNN.registered:
            brew.Register(conv_explicit_param_names)  # type: ignore
            CNN.registered = True

        self.model_id = name

        self.init_height = cnn_parameters.input_height
        self.init_width = cnn_parameters.input_width
        self.dims = cnn_parameters.conv_dims
        self.conv_height_kernels = cnn_parameters.conv_height_kernels
        self.conv_width_kernels = cnn_parameters.conv_width_kernels
        self.pool_kernels_strides = cnn_parameters.pool_kernels_strides
        self.pool_types = cnn_parameters.pool_types

        self._validate_inputs()
        self._setup_initial_blobs()
Esempio n. 3
0
    def fc_explicit_param_names(self):
        brew.Register(fc_explicit_param_names)
        model = model_helper.ModelHelper(name="test_model")
        dim_in = 10
        dim_out = 100
        weight_name = "test_weight_name"
        bias_name = "test_bias_name"
        inputs_name = "test_inputs"
        output_name = "test_output"

        input_distribution = stats.norm()
        inputs = input_distribution.rvs(size=(1, dim_in)).astype(np.float32)
        workspace.FeedBlob(inputs_name, inputs)

        weights = np.random.normal(size=(dim_out, dim_in)).astype(np.float32)
        bias = np.transpose(
            np.random.normal(size=(dim_out)).astype(np.float32))

        brew.fc_explicit_param_names(
            model,
            inputs_name,
            output_name,
            dim_in=dim_in,
            dim_out=dim_out,
            bias_name=bias_name,
            weight_name=weight_name,
            weight_init=("GivenTensorFill", {
                "values": weights
            }),
            bias_init=("GivenTensorFill", {
                "values": bias
            }),
        )

        workspace.RunNetOnce(model.param_init_net)

        model.net.Proto().type = "async_scheduling"
        workspace.CreateNet(model.net)

        workspace.RunNet(model.net)

        expected_output = np.dot(inputs, np.transpose(weights)) + bias
        outputs_diff = expected_output - workspace.FetchBlob(output_name)

        self.assertEqual(np.linalg.norm(outputs_diff), 0)
Esempio n. 4
0
    def __init__(self, name: str, parameters: TrainingParameters) -> None:
        """

        :param name: A unique name for this trainer used to create the data on the
            caffe2 workspace
        :param parameters: The set of training parameters
        """
        if not DNN.registered:
            brew.Register(fc_explicit_param_names)  # type: ignore
            DNN.registered = True

        self.model_id = name
        self.layers = parameters.layers
        self.activations = parameters.activations
        self.dropout_ratio = parameters.dropout_ratio
        self.skip_random_weight_init = parameters.warm_start_model_path is not None

        self._validate_inputs()
        self._setup_initial_blobs()