LBANN  0.103.0
LivermoreBigArtificialNeuralNetworkToolkit
mixup.hpp
Go to the documentation of this file.
1 // Copyright (c) 2014-2023, Lawrence Livermore National Security, LLC.
3 // Produced at the Lawrence Livermore National Laboratory.
4 // Written by the LBANN Research Team (B. Van Essen, et al.) listed in
5 // the CONTRIBUTORS file. <lbann-dev@llnl.gov>
6 //
7 // LLNL-CODE-697807.
8 // All rights reserved.
9 //
10 // This file is part of LBANN: Livermore Big Artificial Neural Network
11 // Toolkit. For details, see http://software.llnl.gov/LBANN or
12 // https://github.com/LLNL/LBANN.
13 //
14 // Licensed under the Apache License, Version 2.0 (the "Licensee"); you
15 // may not use this file except in compliance with the License. You may
16 // obtain a copy of the License at:
17 //
18 // http://www.apache.org/licenses/LICENSE-2.0
19 //
20 // Unless required by applicable law or agreed to in writing, software
21 // distributed under the License is distributed on an "AS IS" BASIS,
22 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
23 // implied. See the License for the specific language governing
24 // permissions and limitations under the license.
26 
27 #ifndef LBANN_CALLBACKS_MIXUP_HPP
28 #define LBANN_CALLBACKS_MIXUP_HPP
29 
31 
32 #include <string>
33 #include <unordered_set>
34 
35 namespace lbann {
36 namespace callback {
37 
58 class mixup : public callback_base
59 {
60 public:
62  mixup(std::unordered_set<std::string> layers, float alpha);
63 
64  mixup* copy() const override { return new mixup(*this); }
65  std::string name() const override { return "mixup"; }
66 
67  void on_forward_prop_end(model* m, Layer* l) override;
68 
70 
73  template <class Archive>
74  void serialize(Archive& ar);
75 
77 
78 private:
80  void write_specific_proto(lbann_data::Callback& proto) const final;
81 
82  friend class cereal::access;
83  mixup();
84 
86  std::unordered_set<std::string> m_layers;
88  float m_alpha;
89 };
90 
91 // Builder function
92 std::unique_ptr<callback_base>
93 build_mixup_callback_from_pbuf(const google::protobuf::Message&,
94  std::shared_ptr<lbann_summary> const&);
95 
96 } // namespace callback
97 } // namespace lbann
98 
99 #endif // LBANN_CALLBACKS_MIXUP_HPP
friend class cereal::access
Definition: mixup.hpp:82
Neural network tensor operation.
Definition: layer.hpp:285
mixup * copy() const override
Definition: mixup.hpp:64
void on_forward_prop_end(model *m, Layer *l) override
Called when a layer ends forward propagation.
Base class for callbacks during training/testing.
Definition: callback.hpp:76
Abstract base class for neural network models.
Definition: model.hpp:83
void serialize(Archive &ar)
Store state to archive for checkpoint and restart.
void write_specific_proto(lbann_data::Callback &proto) const final
std::unique_ptr< callback_base > build_mixup_callback_from_pbuf(const google::protobuf::Message &, std::shared_ptr< lbann_summary > const &)
std::string name() const override
Return this callback&#39;s name.
Definition: mixup.hpp:65
std::unordered_set< std::string > m_layers
Definition: mixup.hpp:86