示例#1
0
文件: mcbm_test.py 项目: ominux/cmt
	def test_patchmcbm_loglikelihood(self):
		xmask = ones([2, 2], dtype='bool')
		ymask = zeros([2, 2], dtype='bool')
		xmask[-1, -1] = False
		ymask[-1, -1] = True

		model = PatchMCBM(2, 2, xmask, ymask)

		samples = model.sample(10000)

		self.assertFalse(isnan(mean(model.loglikelihood(samples))))

		model = PatchMCBM(2, 2, xmask, ymask, max_pcs=2)
		model.initialize(samples)

		logLik = mean(model.loglikelihood(samples))

		preconditioners = model.preconditioners
		model.preconditioners = preconditioners

		self.assertAlmostEqual(mean(model.loglikelihood(samples)), logLik)

		samples = model.sample(100)
示例#2
0
文件: mcbm_test.py 项目: cajal/cmt
    def test_patchmcbm_loglikelihood(self):
        xmask = ones([2, 2], dtype="bool")
        ymask = zeros([2, 2], dtype="bool")
        xmask[-1, -1] = False
        ymask[-1, -1] = True

        model = PatchMCBM(2, 2, xmask, ymask)

        samples = model.sample(10000)

        self.assertFalse(isnan(mean(model.loglikelihood(samples))))

        model = PatchMCBM(2, 2, xmask, ymask, max_pcs=2)
        model.initialize(samples)

        logLik = mean(model.loglikelihood(samples))

        preconditioners = model.preconditioners
        model.preconditioners = preconditioners

        self.assertAlmostEqual(mean(model.loglikelihood(samples)), logLik)

        samples = model.sample(100)
示例#3
0
文件: mcbm_test.py 项目: ominux/cmt
	def test_patchmcbm_pickle(self):
		xmask = ones([2, 2], dtype='bool')
		ymask = zeros([2, 2], dtype='bool')
		xmask[-1, -1] = False
		ymask[-1, -1] = True

		model0 = PatchMCBM(2, 2, xmask, ymask)

		samples = model0.sample(1000)

		tmp_file = mkstemp()[1]

		# store model
		with open(tmp_file, 'w') as handle:
			dump({'model': model0}, handle)

		# load model
		with open(tmp_file) as handle:
			model1 = load(handle)['model']

		# make sure parameters haven't changed
		self.assertEqual(model0.rows, model1.rows)
		self.assertEqual(model0.cols, model1.cols)
		self.assertLess(max(abs(model0[0, 0].priors - model1[0, 0].priors)), 1e-20)
		self.assertLess(max(abs(model0[1, 0].weights - model1[1, 0].weights)), 1e-20)
		self.assertLess(max(abs(model0[1, 0].features - model1[1, 0].features)), 1e-20)
		self.assertLess(max(abs(model0[0, 1].predictors - model1[0, 1].predictors)), 1e-20)
		self.assertLess(max(abs(model0[1, 1].input_bias - model1[1, 1].input_bias)), 1e-20)
		self.assertLess(max(abs(model0[1, 1].output_bias - model1[1, 1].output_bias)), 1e-20)

		xmask = ones([10, 10], dtype='bool')
		ymask = zeros([10, 10], dtype='bool')
		xmask[5, 5] = False
		ymask[5, 5] = True

		model0 = PatchMCBM(4, 5, xmask, ymask, max_pcs=3,
			order=[(i // 5, i % 5) for i in permutation(20)])

		model0.initialize(randn(20, 100))
		samples = model0.sample(1000)

		tmp_file = mkstemp()[1]

		# store model
		with open(tmp_file, 'w') as handle:
			dump({'model': model0}, handle)

		# load model
		with open(tmp_file) as handle:
			model1 = load(handle)['model']

		# make sure parameters haven't changed
		self.assertEqual(model0.rows, model1.rows)
		self.assertEqual(model0.cols, model1.cols)
		self.assertLess(max(abs(asarray(model1.order) - asarray(model0.order))), 1e-20)
		self.assertLess(max(abs(model0.input_mask() - model1.input_mask())), 1e-20)
		self.assertLess(max(abs(model0.output_mask() - model1.output_mask())), 1e-20)

		for i in range(model0.rows):
			for j in range(model0.cols):
				if model0[i, j].dim_in > 0:
					self.assertLess(max(abs(model0[i, j].priors - model1[i, j].priors)), 1e-20)
					self.assertLess(max(abs(model0[i, j].weights - model1[i, j].weights)), 1e-20)
					self.assertLess(max(abs(model0[i, j].features - model1[i, j].features)), 1e-20)
					self.assertLess(max(abs(model0[i, j].predictors - model1[i, j].predictors)), 1e-20)
					self.assertLess(max(abs(model0[i, j].input_bias - model1[i, j].input_bias)), 1e-20)
					self.assertLess(max(abs(model0[i, j].output_bias - model1[i, j].output_bias)), 1e-20)

		model0.initialize(samples)

		logLik = mean(model0.loglikelihood(samples))

		# store model
		with open(tmp_file, 'w') as handle:
			dump({'model': model0}, handle)

		# load model
		with open(tmp_file) as handle:
			model1 = load(handle)['model']

		self.assertAlmostEqual(mean(model1.loglikelihood(samples)), logLik)

		rows, cols = 7, 5
		order = [(i // cols, i % cols) for i in permutation(rows * cols)]

		model0 = PatchMCBM(rows, cols, xmask, ymask, order)

		# store model
		with open(tmp_file, 'w') as handle:
			dump({'model': model0}, handle)

		# load model
		with open(tmp_file) as handle:
			model1 = load(handle)['model']

		for i in range(rows):
			for j in range(cols):
				self.assertEqual(model1.input_mask(i, j).sum(), model1[i, j].dim_in)
示例#4
0
文件: mcbm_test.py 项目: cajal/cmt
    def test_patchmcbm_pickle(self):
        xmask = ones([2, 2], dtype="bool")
        ymask = zeros([2, 2], dtype="bool")
        xmask[-1, -1] = False
        ymask[-1, -1] = True

        model0 = PatchMCBM(2, 2, xmask, ymask)

        samples = model0.sample(1000)

        tmp_file = mkstemp()[1]

        # store model
        with open(tmp_file, "w") as handle:
            dump({"model": model0}, handle)

            # load model
        with open(tmp_file) as handle:
            model1 = load(handle)["model"]

            # make sure parameters haven't changed
        self.assertEqual(model0.rows, model1.rows)
        self.assertEqual(model0.cols, model1.cols)
        self.assertLess(max(abs(model0[0, 0].priors - model1[0, 0].priors)), 1e-20)
        self.assertLess(max(abs(model0[1, 0].weights - model1[1, 0].weights)), 1e-20)
        self.assertLess(max(abs(model0[1, 0].features - model1[1, 0].features)), 1e-20)
        self.assertLess(max(abs(model0[0, 1].predictors - model1[0, 1].predictors)), 1e-20)
        self.assertLess(max(abs(model0[1, 1].input_bias - model1[1, 1].input_bias)), 1e-20)
        self.assertLess(max(abs(model0[1, 1].output_bias - model1[1, 1].output_bias)), 1e-20)

        xmask = ones([10, 10], dtype="bool")
        ymask = zeros([10, 10], dtype="bool")
        xmask[5, 5] = False
        ymask[5, 5] = True

        model0 = PatchMCBM(4, 5, xmask, ymask, max_pcs=3, order=[(i // 5, i % 5) for i in permutation(20)])

        model0.initialize(randn(20, 100))
        samples = model0.sample(1000)

        tmp_file = mkstemp()[1]

        # store model
        with open(tmp_file, "w") as handle:
            dump({"model": model0}, handle)

            # load model
        with open(tmp_file) as handle:
            model1 = load(handle)["model"]

            # make sure parameters haven't changed
        self.assertEqual(model0.rows, model1.rows)
        self.assertEqual(model0.cols, model1.cols)
        self.assertLess(max(abs(asarray(model1.order) - asarray(model0.order))), 1e-20)
        self.assertLess(max(abs(model0.input_mask() - model1.input_mask())), 1e-20)
        self.assertLess(max(abs(model0.output_mask() - model1.output_mask())), 1e-20)

        for i in range(model0.rows):
            for j in range(model0.cols):
                if model0[i, j].dim_in > 0:
                    self.assertLess(max(abs(model0[i, j].priors - model1[i, j].priors)), 1e-20)
                    self.assertLess(max(abs(model0[i, j].weights - model1[i, j].weights)), 1e-20)
                    self.assertLess(max(abs(model0[i, j].features - model1[i, j].features)), 1e-20)
                    self.assertLess(max(abs(model0[i, j].predictors - model1[i, j].predictors)), 1e-20)
                    self.assertLess(max(abs(model0[i, j].input_bias - model1[i, j].input_bias)), 1e-20)
                    self.assertLess(max(abs(model0[i, j].output_bias - model1[i, j].output_bias)), 1e-20)

        model0.initialize(samples)

        logLik = mean(model0.loglikelihood(samples))

        # store model
        with open(tmp_file, "w") as handle:
            dump({"model": model0}, handle)

            # load model
        with open(tmp_file) as handle:
            model1 = load(handle)["model"]

        self.assertAlmostEqual(mean(model1.loglikelihood(samples)), logLik)

        rows, cols = 7, 5
        order = [(i // cols, i % cols) for i in permutation(rows * cols)]

        model0 = PatchMCBM(rows, cols, xmask, ymask, order)

        # store model
        with open(tmp_file, "w") as handle:
            dump({"model": model0}, handle)

            # load model
        with open(tmp_file) as handle:
            model1 = load(handle)["model"]

        for i in range(rows):
            for j in range(cols):
                self.assertEqual(model1.input_mask(i, j).sum(), model1[i, j].dim_in)