2 ms·
there are few things you need to consider. first is language. need to choose a familiar language. second is feature set. they don't implement the same set of
by billconan 10y ago
there are few things you need to consider.
first is language. need to choose a familiar language.
second is feature set. they don't implement the same set of operators. but if you only want to use the common ones, most frameworks should have them.
the third is their ability to train in parallel. for example, does a framework support multiple machines? or just single machine, multiple gpus? Performance is also a factor. Do they support simd/gpu? do they generate intermittent code and compile it into cpp/cuda? or they just call into gpu libraries? Do you want to support mobile devices?
the fourth difference is the level of abstraction. if a framework is very low level, users need to understand many fundamentals of deep learning. but on the other hand, if you want to extend the framework to add new operators, a low level framework is easier to hack.
a high level framework lets you to write less code, but it hides details and makes it harder to hack.
the last thing that can be considered is the difference between dynamic/static framework. dynet and chainer and tensorflow with something called "fold" are dynamic frameworks. I was told they are more flexible. but I don't understand the details.