ONE - On-device Neural Engine
Loading...
Searching...
No Matches
souschef::GaussianFloat16DataChef Class Referencefinal

#include <Gaussian.h>

Collaboration diagram for souschef::GaussianFloat16DataChef:

Public Member Functions

 GaussianFloat16DataChef (float mean, float stddev)
 
std::vector< uint8_t > generate (int32_t count) const override
 Generate a sequence of 'count' elements as a byte sequence.
 
- Public Member Functions inherited from souschef::DataChef
virtual ~DataChef ()=default
 

Detailed Description

Definition at line 44 of file Gaussian.h.

Constructor & Destructor Documentation

◆ GaussianFloat16DataChef()

souschef::GaussianFloat16DataChef::GaussianFloat16DataChef ( float  mean,
float  stddev 
)
inline

Definition at line 47 of file Gaussian.h.

47 : _mean{mean}, _stddev{stddev}
48 {
49 // DO NOTHING
50 }

Member Function Documentation

◆ generate()

std::vector< uint8_t > souschef::GaussianFloat16DataChef::generate ( int32_t  count) const
overridevirtual

Generate a sequence of 'count' elements as a byte sequence.

Let D be the return value of generate(N). Then, D.size() == N * sizeof(T) where T is the element type.

Implements souschef::DataChef.

Definition at line 105 of file Gaussian.cpp.

106{
107 auto time_stamp = std::chrono::system_clock::now().time_since_epoch().count();
108 auto seed = static_cast<std::minstd_rand::result_type>(time_stamp);
109
110 std::minstd_rand rand{static_cast<std::minstd_rand::result_type>(seed)};
111 std::normal_distribution<float> dist{_mean, _stddev};
112
113 std::vector<uint8_t> res;
114
115 constexpr float max_cap = 1e9;
116 constexpr float min_cap = -1e9;
117 for (uint32_t n = 0; n < count; ++n)
118 {
119 float raw_value = dist(rand);
120 const float capped_value = std::max(min_cap, std::min(max_cap, raw_value));
121 const uint16_t value = fp16_ieee_from_fp32_value(capped_value);
122 auto const arr = reinterpret_cast<const uint8_t *>(&value);
123
124 for (uint32_t b = 0; b < sizeof(uint16_t); ++b)
125 {
126 res.emplace_back(arr[b]);
127 }
128 }
129
130 return res;
131}
arr
Definition infer.py:92

The documentation for this class was generated from the following files: