mirror of
https://github.com/davisking/dlib.git
synced 2024-11-01 10:14:53 +08:00
Merge branch 'e-fominov-faq-changes'
This commit is contained in:
commit
e20b6512f5
@ -329,5 +329,52 @@ cross_validate_trainer_threaded(trainer,
|
||||
|
||||
<!-- ************************************************************************* -->
|
||||
|
||||
<questions group="Deep Learning">
|
||||
<question text="Why can't I use DNN module with Visual Studio?">
|
||||
The deep learning toolkit in dlib requires a C++11 compiler.
|
||||
Unfortunately, as of July 2016, no versions of Visual Studio fully
|
||||
support C++11, so not all the deep learning code will compile.
|
||||
However, all the other modules in dlib can be used in Visual Studio
|
||||
without any trouble.
|
||||
</question>
|
||||
|
||||
<question text="Why can't I change the network architecture at runtime?">
|
||||
A major design goal of this API is to let users create new loss
|
||||
layers, computational layers, and solvers without needing to
|
||||
understand or even look at the dlib internals. A lot of the API
|
||||
decisions are based on what makes the interface a user needs to
|
||||
implement to create new layers as simple as possible. In particular,
|
||||
designing the API in this compile-time static way makes it simple for
|
||||
these use cases.
|
||||
<p>
|
||||
Here is an example of one problem it addresses. Since dlib
|
||||
exposes the entire network architecture to the C++ type system we
|
||||
can get automatic serialization of networks. Without this, we
|
||||
would have to resort to the kind of hacky global layer registry
|
||||
used in other tools that compose networks entirely at runtime.
|
||||
</p>
|
||||
<p>
|
||||
Another nice feature is that we get to use C++11 alias template
|
||||
statements to create network sub-blocks, which we can then use to easily
|
||||
define very large networks. There are examples of this in <a
|
||||
href="dnn_introduction2_ex.cpp.html">this example program</a>. It
|
||||
should also be pointed out that it takes days or even weeks to
|
||||
train one network. So it isn't as if you will be writing a
|
||||
program that loops over large numbers of networks and trains them
|
||||
all. This makes the time needed to recompile a program to change
|
||||
the network irrelevant compared to the entire training time.
|
||||
Moreover, there are plenty of compile time constructs in C++ you
|
||||
can use to enumerate network architectures (e.g. loop
|
||||
over filter widths) if you really wanted to do so.
|
||||
</p>
|
||||
<p>
|
||||
All that said, if you think you found a compelling use case that isn't supported
|
||||
by the current API feel free to post a <a href="https://github.com/davisking/dlib/issues">github</a> issue.
|
||||
</p>
|
||||
</question>
|
||||
</questions>
|
||||
|
||||
<!-- ************************************************************************* -->
|
||||
|
||||
|
||||
</doc>
|
||||
|
Loading…
Reference in New Issue
Block a user