| 154 | } |
| 155 | |
| 156 | SnakeWeights load_snake( |
| 157 | core::BackendWeightStore & store, |
| 158 | const assets::TensorSource & source, |
| 159 | const std::string & name, |
| 160 | int64_t channels, |
| 161 | assets::TensorStorageType storage_type) { |
| 162 | (void) storage_type; |
| 163 | SnakeWeights snake; |
| 164 | snake.alpha = source.require_f32(name, {channels}); |
| 165 | std::vector<float> inv_alpha(snake.alpha.size(), 0.0F); |
| 166 | for (size_t index = 0; index < snake.alpha.size(); ++index) { |
| 167 | inv_alpha[index] = 1.0F / (snake.alpha[index] + 1.0e-9F); |
| 168 | } |
| 169 | snake.alpha_tensor = store.make_from_f32(core::TensorShape::from_dims({channels, 1}), assets::TensorStorageType::F32, snake.alpha); |
| 170 | snake.inv_alpha_tensor = |
| 171 | store.make_from_f32(core::TensorShape::from_dims({channels, 1}), assets::TensorStorageType::F32, std::move(inv_alpha)); |
| 172 | return snake; |
| 173 | } |
| 174 | |
| 175 | ResBlockWeights load_resblock( |
| 176 | core::BackendWeightStore & store, |
no test coverage detected