def test_ELM_SaveLoad(self): X = np.array([1, 2, 3, 1, 2, 3]) T = np.array([[1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1]]) elm = ELM(1, 2, precision='32', norm=0.02) elm.add_neurons(1, "lin") elm.add_neurons(2, "tanh") elm.train(X, T, "wc", w=(0.7, 0.3)) B1 = elm.nnet.get_B() try: f, fname = tempfile.mkstemp() elm.save(fname) elm2 = ELM(3, 3) elm2.load(fname) finally: os.close(f) self.assertEqual(elm2.nnet.inputs, 1) self.assertEqual(elm2.nnet.outputs, 2) self.assertEqual(elm2.classification, "wc") self.assertIs(elm.precision, np.float32) self.assertIs(elm2.precision, np.float64) # precision has changed np.testing.assert_allclose(np.array([0.7, 0.3]), elm2.wc) np.testing.assert_allclose(0.02, elm2.nnet.norm) np.testing.assert_allclose(B1, elm2.nnet.get_B()) self.assertEqual(elm2.nnet.get_neurons()[0][1], "lin") self.assertEqual(elm2.nnet.get_neurons()[1][1], "tanh")
def model_training(model_path, data_path, neurons=300): images, labels = read_mnist.load_mnist(data_path, kind='train') images = map(read_mnist.up_to_2D, images) images = map(get_hog, images) images = np.mat(np.array(images)) labels = np.mat(map(read_mnist.handle_label, labels)) elm = ELM(images.shape[1], labels.shape[1]) elm.add_neurons(neurons, 'sigm') elm.add_neurons(neurons, 'sigm') # elm.add_neurons(int(images.shape[1]*0.8), 'sigm') # elm.add_neurons(int(images.shape[1]*0.6), 'tanh') elm.train(images, labels) elm.save(model_path)
npos = sum((p == 1)) print "\n Training results" print "Tpos:", ntpos, " / ", npos, "TD:", ntpos / float(npos) print "Acc: ", nhit / (float)(len(p)), "total", len(p) # now prediction for testing set prjinput = elmInput.project(XXtest) prjinput_normed = mapMinMax(prjinput) prjhidden = elmHidden1.project(prjinput_normed) prjhidden_normed = mapMinMax(prjhidden) youtput = elmOutput.predict(prjhidden_normed) # training results mse_error = elmOutput.error(youtput, YYtest) p = ytest.squeeze() yout = np.argmax(youtput, axis=1) nhit = sum(yout == p) ntpos = sum((yout == 1) & (p == 1)) ntneg = sum((yout == 0) & (p == 0)) npos = sum((p == 1)) nneg = sum((p == 0)) print "\n Testing results" print "Tpos:", ntpos, " / ", npos, "TD:", ntpos / float(npos) print "Tneg:", ntneg, " / ", nneg, "TN:", ntneg / float(nneg) print "Acc: ", nhit / (float)(len(p)), "total", len(p) print '\ saving layers' elmInput.save("elm_input_0") elmHidden1.save("elm_hidden_0") elmOutput.save("elm_output_0")