MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / Eval

Function Eval

tensorflow/lite/kernels/audio_spectrogram.cc:101–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99
100template <KernelType kernel_type>
101TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) {
102 auto* params =
103 reinterpret_cast<TfLiteAudioSpectrogramParams*>(node->user_data);
104
105 const TfLiteTensor* input = GetInput(context, node, kInputTensor);
106 TfLiteTensor* output = GetOutput(context, node, kOutputTensor);
107
108 TF_LITE_ENSURE(context, params->spectrogram->Initialize(params->window_size,
109 params->stride));
110
111 const float* input_data = GetTensorData<float>(input);
112
113 const int64_t sample_count = input->dims->data[0];
114 const int64_t channel_count = input->dims->data[1];
115
116 const int64_t output_width = params->spectrogram->output_frequency_channels();
117
118 float* output_flat = GetTensorData<float>(output);
119
120 std::vector<float> input_for_channel(sample_count);
121 for (int64_t channel = 0; channel < channel_count; ++channel) {
122 float* output_slice =
123 output_flat + (channel * params->output_height * output_width);
124 for (int i = 0; i < sample_count; ++i) {
125 input_for_channel[i] = input_data[i * channel_count + channel];
126 }
127 std::vector<std::vector<float>> spectrogram_output;
128 TF_LITE_ENSURE(context,
129 params->spectrogram->ComputeSquaredMagnitudeSpectrogram(
130 input_for_channel, &spectrogram_output));
131 TF_LITE_ENSURE_EQ(context, spectrogram_output.size(),
132 params->output_height);
133 TF_LITE_ENSURE(context, spectrogram_output.empty() ||
134 (spectrogram_output[0].size() == output_width));
135 for (int row_index = 0; row_index < params->output_height; ++row_index) {
136 const std::vector<float>& spectrogram_row = spectrogram_output[row_index];
137 TF_LITE_ENSURE_EQ(context, spectrogram_row.size(), output_width);
138 float* output_row = output_slice + (row_index * output_width);
139 if (params->magnitude_squared) {
140 for (int i = 0; i < output_width; ++i) {
141 output_row[i] = spectrogram_row[i];
142 }
143 } else {
144 for (int i = 0; i < output_width; ++i) {
145 output_row[i] = sqrtf(spectrogram_row[i]);
146 }
147 }
148 }
149 }
150 return kTfLiteOk;
151}
152
153} // namespace audio_spectrogram
154

Callers

nothing calls this directly

Calls 7

GetInputFunction · 0.85
GetOutputFunction · 0.85
InitializeMethod · 0.45
sizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected