I am writing software that makes use of a neural net. What makes my network special as compared to others, is the way I train them. Its non standard, its something that I don't want to give away to another company. So I've been thinking about how to protect myself against miss-use / stealing of my neural net training code. The company who is buying this software has about 12 C++ coders hired, while I write solely in C#, and I have doubt that I could keep some parts secret to them, as reverse engineering is likely to occur. When the software i make becomes a success.
So at first I though lets put some secure key in as a requirement to create an instance of this class, and without that drop execution, some sort of licence construction. That sounds nice, but as for neural networks training them is an essential part; training methods should be able to create neural networks. Then a trainer would need a key generator as well...
Then I was thinking how about leaving-out the option to train data.
So the other company is only able to load the trained brain.
But not to train the neural network, by placing all training related code into a separate .cs file as a partial class.
Then I simply develop the neural net class as a whole on my private github.
But take out only the snippet without training routines to use in my customer program.
I wonder if this would be a wise thing to do, or if it would result in some anti pattern. ???
one anti pattern for example is maintaining the neural net code.
To "copy" one file of a github project to another project isnt ideal.
This is not a general duplicate of another protections question. This is about a program requiring A+B parts to train, but only A to run it, and not providing the B part.