that cuda is available even though it knows it didn't find cublas, which
is part of the standard cuda install. So we need to add a check to see
if cmake *really for realz* found cuda.
* Added exponential distribution
* tab problem removed?
* forgot std::
* Also added Weibull distribution. Very useful indeed.
* Simple Weibull distribution unit test
* don't forget std::
* sorry, typo
* [RAND] - seed the random number generators for consistency and no nasty surprises
- added parameter for tolerance
- added unit test for exponential distribution
* [RAND] print the spinner more often
* [RAND] up the tolerance for kurtosis a bit
* [RAND] refactored parameters to reflect documentation on wikipedia.
* [RAND] added documentation to _abstract
* [RAND] i switched the order of the arguments to get_random_weibull and didn't update the unit tests. oops
Co-authored-by: pf <pf@pf-ubuntu-dev>
* fix typos
* add cifar-10
* open files in binary mode
* print messages with file name only, like mnist loader
* some fixes
* add mnist.cpp to CMakeLists.txt
* fix test index
* do not use iterator in cast
* add cifar.cpp to all
* Add Davis' suggestions
* no need to use namespace std and clean up empty lines
* [SERIALIZATION] fixed bug when (de)serializing vector<complex<float>>. DLIB_DEFINE... macro uses __out and __in variables names for ostream and istream objects respectively to avoid member variable name conflicts.
* Refactoring objects in DLIB_DEFINE_DEFAULT_SERIALIZATION to avoid name conflicts with user types
* Refactoring objects in DLIB_DEFINE_DEFAULT_SERIALIZATION to avoid name conflicts with user types
* removed tabs
* removed more tabs
Co-authored-by: pf <pf@pf-ubuntu-dev>
* wip: layer normalization on cpu
* wip: add cuda implementation, nor working yet
* wip: try to fix cuda implementation
* swap grid_strid_range and grid_strid_range_y: does not work yet
* fix CUDA implementation
* implement cuda gradient
* add documentation, move layer_norm, update bn_visitor
* add tests
* use stddev instead of variance in test (they are both 1, anyway)
* add test for means and invstds on CPU and CUDA
* rename visitor to disable_duplicative_bias
* handle more cases in the visitor_disable_input_bias
* Add tests for visitor_disable_input_bias
* add cuda test for loss_binary_log_per_pixel and some needed refactoring
* add cuda test for loss_multiclass_log_per_pixel
* forgot to add cpu version in loss
* remove a line I added by mistake
* fix typos
* declare label_to_ignore as static
* use tensor_index function instead of index method
* test cuda and cpu gradients values
* use DLIB_TEST instead of DLIB_CASSERT
* add cuda implementation for loss_multiclass_log_per_pixel_weighted
* add test for cuda and cpu implementations
* fix comment
* move weighted label to its own file
* Update path in doc
Co-authored-by: Davis E. King <davis685@gmail.com>
* [DLIB] extended proxy objects to work with strinstream, istringstream, ostringstream and vector<char>
* [DLIB] - use std::istream and std::ostream instead of std::istringstream, std::ostringstream and std::stringstream.
- put back the filename member variable for better error messages
* [DLIB] - review requirement
Co-authored-by: pf <pf@pf-ubuntu-dev>
* [DLIB] added seekpos and seekoff functions. These are necessary for functions in iostream base class to work properly. e.g. seekg. Note that in seekoff, you do NOT want to check the validity of read_pos after it has been updated. dlib::vectorstream and std::iostream work together to set EOF and/or badbit. Doing something like seekg(10000) should not throw even if the underlying buffer has 2 bytes. You should check if EOF is set and possibly call clear(). We have removed seekg from dlib::vectorstream as this adds confusion. Now std::iostream::seekg is called which somewhere down the callstack will call seekpos and/or seekoff. So there should be no diverging functionality between calling seekg on dlib::vectorstream& or std::iostream& when there is a cast.
* [DLIB] vectorstream unit test is updated to run identical tests on dlib::vectorstream& and std::iostream&
* [DLIB] only support read pointers and delete copy and move semantics
* [DLIB] explicit tests for seekg() in different directions
* [DLIB] - no need to delete the move constructor and move assign operator. This is implicitly done by deleting the copy constructor and copy assign operator.
* [DLIB] - remove leftover comments. no need
- use more idiomatic notation
Co-authored-by: pf <pf@pf-ubuntu-dev>
Now the user doesn't have to supply a visitor capable of visiting all
layers, but instead just the ones they are interested in. Also added
visit_computational_layers() and visit_computational_layers_range()
since those capture a very common use case more concisely than
visit_layers(). That is, users generally want to mess with the
computational layers specifically as those are the stateful layers.
* add visitor to remove bias from bn_ inputs (#closes 2155)
* remove unused parameter and make documentation more clear
* remove bias from bn_ layers too and use better name
* let the batch norm keep their bias, use even better name
* be more consistent with impl naming
* remove default constructor
* do not use method to prevent some errors
* add disable bias method to pertinent layers
* update dcgan example
- grammar
- print number of network parameters to be able to check bias is not allocated
- at the end, give feedback to the user about what the discriminator thinks about each generated sample
* fix fc_ logic
* add documentation
* add bias_is_disabled methods and update to_xml
* print use_bias=false when bias is disabled
Previously we used only the non-robust version, and so would mistakenly
not catch sequenes of loss increase that begin with an extremely large
value and then settled down to still large but less extreme values.