区块链虽然是一个新兴的概念,但它依赖的技术一点也不新,如非对称加密技术、P2P 网络协议等。区块链本质上是一个基于 P2P 的价值传输协议。
可以这么说,区块链更像是一门交叉学科,结合了 P2P 网络技术、非对称加密技术、宏观经济学、经济学博弈等等知识,构建的一个新领域——针对价值互联网的探索。
std::vector TensorStatistic::finishAndCompute() {
std::vector<float> scaleValue(mDistribution.size(), 0.0f);
if (mMergeChannel) {
if (!mValidChannel[0]) {
return scaleValue;
}
float sum = 0.0f;
auto& distribution = mDistribution[0];
std::for_each(distribution.begin(), distribution.end(), [&](float n) { sum += n; });
std::for_each(distribution.begin(), distribution.end(), [sum](float& n) { n /= sum; });
auto threshold = _computeThreshold(distribution);
auto scale = ((float)threshold + 0.5) / mIntervals[0] / mFeatureClampValue;
// MNN_PRINT("==> %s == %d, %f, %f\n", mName.c_str(),threshold, 1.0f / mIntervals[0], scale * mFeatureClampValue);
std::fill(scaleValue.begin(), scaleValue.end(), scale);
mScales = scaleValue;
return scaleValue;
}
for (int c = 0; c < mDistribution.size(); ++c) {
if (!mValidChannel[c]) {
continue;
}
float sum = 0.0f;
auto& distribution = mDistribution[c];
// 统计每个bin中数据总数
std::for_each(distribution.begin(), distribution.end(), [&](float n) { sum += n; });
// 每个bin中数目 n/sum,相当于每种数据分布概率
std::for_each(distribution.begin(), distribution.end(), [sum](float& n) { n /= sum; });
auto threshold = _computeThreshold(distribution);
// 根据计算所得阈值,计算得到每个tensor的缩放比例
scaleValue[c] = ((float)threshold + 0.5) / mIntervals[c] / mFeatureClampValue;
}
return scaleValue;
}