一组结构化绑定错误,属于神经网络



所以我下载了一个多年未使用的库,用于神经进化增强拓扑。基本上,一个不断进化的神经网络。它有很多很多的错误(大约20-30个),我设法修复了它们,除了这些:

错误C3694结构化绑定声明不能包含除'static', 'thread_local', 'auto'和cv-qualifiers之外的任何说明符

Error (active) E2828 type "float"没有要绑定到

的组件错误(激活)E0413没有合适的转换函数从"const std::tuple<float,>";float"Exists//this is dataset

错误(活动)E2825结构化绑定声明无效的说明符

这是错误代码:


const int x1 = 1;
const int x2 = 2;
const int y = 1;
static constexpr int NumInput = 2;
static constexpr int NumOutput = 1;
static constexpr bool Bias = true;
static constexpr float ThresholdFitness = 0.80f;
static constexpr std::size_t PopulationSize = 100;
using ParamConfig = EvolutionNet::DefaultParamConfig;
using EvolutionNetT = EvolutionNet::EvolutionNet<NumInput, NumOutput, Bias, ParamConfig>;
using Network = EvolutionNetT::NetworkT;
using FitnessScore = EvolutionNet::FitnessScore;

for (float&& [x1, x2, y] : dataset) { // const auto, where all the errors are
network->setInputValue(0, x1);
network->setInputValue(1, x2);
network->feedForward<ParamConfig>();
const float output = network->getOutputValue(0);
assert(output >= 0.f && output <= 1.f);
score += 1.f - (std::abs(output - y));
}

我对结构化绑定一无所知,我只是想在其他项目中使用一些神经网络。这件事的记录不是最好的,但我相信这只意味着for each循环,除非结构化绑定与此有关。如何修正这些错误呢?谢谢你。

由于错误消息显示结构化绑定中只允许使用auto类型说明符(和cv-限定符),因此将float&&替换为auto&&

如果您对这种语法感到不舒服,那么您不需要使用它。它纯粹是语法上的糖。您可以使用std::get访问std::tuple中各个元素的值,例如:

for(auto entry : dataset) {
auto x1 = std::get<0>(entry);
auto x2 = std::get<1>(entry);
auto y = std::get<2>(entry);
//...
}

或者,如果您愿意,可以写出类型而不是auto。如果您希望引用元组中的元素,而不仅仅是它们的值,请在适当的位置添加&&/&/const

相关内容

  • 没有找到相关文章

最新更新