10 #include <unordered_map> 12 #include <ml/neural_net/float_array.hpp> 14 #import <MLCompute/MLCompute.h> 16 NS_ASSUME_NONNULL_BEGIN
19 namespace neural_net {
21 class API_AVAILABLE(macos(10.16)) mlc_layer_weights {
26 mlc_layer_weights(
const mlc_layer_weights &) =
delete;
27 mlc_layer_weights(mlc_layer_weights &&);
28 mlc_layer_weights &operator=(
const mlc_layer_weights &) =
delete;
29 mlc_layer_weights &operator=(mlc_layer_weights &&);
37 NSDictionary<NSString *, MLCTensor *> *tensor_views()
const {
return tensors_; }
44 NSDictionary<NSString *, NSData *> *tensor_weights()
const;
52 float_array_map export_weights()
const;
61 float_array_map export_weights_and_optimizer_data()
const;
67 void add_conv_weight(
const std::string &name,
const float_array &arr);
73 void add_conv_bias(
const std::string &name,
const float_array &arr);
79 void add_flat_array(
const std::string &name,
const float_array &arr);
85 void add_lstm_weight(
const std::string &name,
const float_array &arr);
90 void add_optimizer_data(
const std::string &layer_name,
const std::string &optimizer_data_1_key,
91 const float_array &optimizer_data_1,
92 const std::string &optimizer_data_2_key,
93 const float_array &optimizer_data_2);
102 MLCTensorData *copy_float_array(
const std::string &name,
const float_array &arr);
111 std::unordered_map<std::string, shared_float_array> weights_;
116 NSMutableDictionary<NSString *, MLCTensor *> *tensors_ = nil;
122 NS_ASSUME_NONNULL_END