Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Refactor multiclass #2

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

LiuYuHui
Copy link
Contributor

@LiuYuHui LiuYuHui commented Jul 15, 2020

  • find constructor involving in labels, rewrite parameter and body.
  • find method involving in labels, rewrite parameter and body.
  • when find CXXCtorInitializer involving labels, remove the labels.
  • when find set_labels in CXXMethod, remove it.

@gf712
Copy link
Member

gf712 commented Jul 15, 2020

You are probably compiling with an old include file and linking to the new lib (or vice versa). Can you share the CMakeCache.txt please?

@LiuYuHui
Copy link
Contributor Author

You are probably compiling with an old include file and linking to the new lib (or vice versa). Can you share the CMakeCache.txt please?

hi @gf712 , here is the CMakeCache.txt: https://pastebin.com/1wBzQBnY

@LiuYuHui
Copy link
Contributor Author

LiuYuHui commented Jul 17, 2020

Current LibTooling script support rewrite CXXMethodDecl and CXXConstructorDecl.
before

class Test : public MulticlassMachine{
public:
    Test();
    Test(std::shared_ptr<Labels> labs, int C): MulticlassMachine(labs){
        set_labels(labs);
    }

    void train_machine(std::shared_ptr<Features> data) override{
        auto t = m_labels;
    }

    void test2(){
        set_labels(m_labels);
        auto t = m_labels;
    }

     void test3(const std::shared_ptr<Features>& feature){
        set_labels(m_labels);
        auto t = m_labels;
    }
};

after

class Test : public MulticlassMachine{
public:
    Test();
    Test( int C): MulticlassMachine(labs){
        set_labels(labs);
    }

    void train_machine(std::shared_ptr<Features> data, const std::shared_ptr<Labels>& labs) override{
        auto t = labs;
    }

    void test2(const std::shared_ptr<Labels>& labs){
        set_labels(labs);
        auto t = labs;
    }

     void test3(const std::shared_ptr<Features>& feature, const std::shared_ptr<Labels>& labs){
        set_labels(labs);
        auto t = labs;
    }
};

@LiuYuHui
Copy link
Contributor Author

LiuYuHui commented Jul 21, 2020

i think the only missing one is that CXXCtorInitializer.
such as

MulticlassSVM::MulticlassSVM(
	std::shared_ptr<MulticlassStrategy >strategy, float64_t C, std::shared_ptr<Kernel> k, std::shared_ptr<Labels> lab)
	: KernelMulticlassMachine(std::move(strategy), k, std::make_shared<SVM>(C, k, lab), lab)
{
	init();
	m_C=C;
}

when we remove std::shared_ptr<Labels> lab from MulticlassSVM::MulticlassSVM, we should also change the constructor initializer to KernelMulticlassMachine(std::move(strategy), k, std::make_shared<SVM>(C, k, lab))

@gf712
Copy link
Member

gf712 commented Jul 21, 2020

i think the only missing one is that CXXCtorInitializer.
such as

MulticlassSVM::MulticlassSVM(
	std::shared_ptr<MulticlassStrategy >strategy, float64_t C, std::shared_ptr<Kernel> k, std::shared_ptr<Labels> lab)
	: KernelMulticlassMachine(std::move(strategy), k, std::make_shared<SVM>(C, k, lab), lab)
{
	init();
	m_C=C;
}

when we remove std::shared_ptr<Labels> lab from MulticlassSVM::MulticlassSVM, we should also change the constructor initializer to KernelMulticlassMachine(std::move(strategy), k, std::make_shared<SVM>(C, k, lab))

Cool! Do you need help with that? :)

@LiuYuHui
Copy link
Contributor Author

LiuYuHui commented Jul 21, 2020

i think the only missing one is that CXXCtorInitializer.
such as

MulticlassSVM::MulticlassSVM(
	std::shared_ptr<MulticlassStrategy >strategy, float64_t C, std::shared_ptr<Kernel> k, std::shared_ptr<Labels> lab)
	: KernelMulticlassMachine(std::move(strategy), k, std::make_shared<SVM>(C, k, lab), lab)
{
	init();
	m_C=C;
}

when we remove std::shared_ptr<Labels> lab from MulticlassSVM::MulticlassSVM, we should also change the constructor initializer to KernelMulticlassMachine(std::move(strategy), k, std::make_shared<SVM>(C, k, lab))

Cool! Do you need help with that? :)

yes, I have no idea about how to remove the label in constructor initializer. i find a function call getInit () in clang reference, but i don't know how to use it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants