Remove magix numbers.

This commit is contained in:
2018-03-22 15:07:13 +01:00
parent 0a8aa4e2eb
commit 632c85b2fb
10 changed files with 51 additions and 40 deletions

View File

@@ -19,15 +19,15 @@ ActivityAnimation::Color ActivityAnimation::colorBySign(float intensity)
}
ActivityAnimation::ActivityAnimation(
const std::vector<std::pair<DType, std::pair<std::size_t, std::size_t>>> &interactions, const float *aPositions,
const float *bPositions, float xDist) :
ActivityAnimation(interactions, aPositions, bPositions, xDist, ActivityAnimation::colorBySign)
const std::vector<std::pair<DType, std::pair<std::size_t, std::size_t>>> &interactions,
const float *aPositions, const float *bPositions) :
ActivityAnimation(interactions, aPositions, bPositions, ActivityAnimation::colorBySign)
{
}
ActivityAnimation::ActivityAnimation(
const std::vector<std::pair<DType, std::pair<std::size_t, std::size_t>>> &interactions,
const float *aPositions, const float *bPositions, float xDist, ColoringFunction coloring)
const float *aPositions, const float *bPositions, ColoringFunction coloring)
:
bufferLength(3 * interactions.size())
{
@@ -44,7 +44,7 @@ ActivityAnimation::ActivityAnimation(
for (auto i : Range(3)) {
startingPos.emplace_back(aPos[i]);
delta.emplace_back(bPos[i] - aPos[i] + (i % 3 ? 0 : xDist));
delta.emplace_back(bPos[i] - aPos[i] + (i % 3 ? 0 : LAYER_X_OFFSET));
}
}
}

View File

@@ -15,10 +15,12 @@ namespace fmri
typedef std::array<float, 3> Color;
typedef std::function<Color(float)> ColoringFunction;
ActivityAnimation(const std::vector<std::pair<DType, std::pair<std::size_t, std::size_t>>> &interactions,
const float *aPositions, const float *bPositions, float xDist);
ActivityAnimation(const std::vector<std::pair<DType, std::pair<std::size_t, std::size_t>>> &interactions,
const float *aPositions, const float *bPositions, float xDist, ColoringFunction coloring);
ActivityAnimation(
const std::vector<std::pair<DType, std::pair<std::size_t, std::size_t>>> &interactions,
const float *aPositions, const float *bPositions);
ActivityAnimation(
const std::vector<std::pair<DType, std::pair<std::size_t, std::size_t>>> &interactions,
const float *aPositions, const float *bPositions, ColoringFunction coloring);
void draw(float timeScale) override;
static Color colorBySign(float intensity);

View File

@@ -15,9 +15,8 @@ void ImageInteractionAnimation::draw(float step)
drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), textureCoordinates.data(), texture);
}
ImageInteractionAnimation::ImageInteractionAnimation(const DType *data, const std::vector<int> &shape,
const std::vector<float> &prevPositions,
const std::vector<float> &curPositions, float xDist) :
ImageInteractionAnimation::ImageInteractionAnimation(const DType *data, const std::vector<int> &shape, const std::vector<float> &prevPositions,
const std::vector<float> &curPositions) :
texture(loadTexture(data, shape[2], shape[1] * shape[3], shape[1])),
startingPositions(MultiImageVisualisation::getVertices(prevPositions)),
deltas(MultiImageVisualisation::getVertices(curPositions)),
@@ -26,6 +25,6 @@ ImageInteractionAnimation::ImageInteractionAnimation(const DType *data, const st
caffe::caffe_sub(deltas.size(), deltas.data(), startingPositions.data(), deltas.data());
for (auto i = 0u; i < deltas.size(); i += 3) {
deltas[i] = xDist;
deltas[i] = LAYER_X_OFFSET;
}
}

View File

@@ -9,7 +9,8 @@ namespace fmri
class ImageInteractionAnimation : public Animation
{
public:
ImageInteractionAnimation(const DType* data, const std::vector<int>& shape, const std::vector<float>& prevPositions, const std::vector<float>& curPositions, float xDist);
ImageInteractionAnimation(const DType *data, const std::vector<int> &shape, const std::vector<float> &prevPositions,
const std::vector<float> &curPositions);
virtual void draw(float step);
private:

View File

@@ -3,7 +3,6 @@
#include <caffe/util/math_functions.hpp>
#include "PoolingLayerAnimation.hpp"
#include "glutils.hpp"
#include "Range.hpp"
#include "MultiImageVisualisation.hpp"
using namespace std;
@@ -11,7 +10,7 @@ using namespace fmri;
PoolingLayerAnimation::PoolingLayerAnimation(const LayerData &prevData, const LayerData &curData,
const std::vector<float> &prevPositions,
const std::vector<float> &curPositions, float xDist) :
const std::vector<float> &curPositions) :
original(loadTextureForData(prevData)),
downSampled(loadTextureForData(curData)),
startingPositions(MultiImageVisualisation::getVertices(prevPositions)),
@@ -25,7 +24,7 @@ PoolingLayerAnimation::PoolingLayerAnimation(const LayerData &prevData, const La
caffe::caffe_sub(targetPositions.size(), targetPositions.data(), startingPositions.data(), deltas.data());
for (auto i = 0u; i < deltas.size(); i+=3) {
deltas[i] = xDist;
deltas[i] = LAYER_X_OFFSET;
}
}

View File

@@ -9,7 +9,9 @@ namespace fmri
class PoolingLayerAnimation : public Animation
{
public:
PoolingLayerAnimation(const LayerData& prevData, const LayerData& curData, const std::vector<float>& prevPositions, const std::vector<float>& curPositions, float xDist);
PoolingLayerAnimation(const LayerData &prevData, const LayerData &curData,
const std::vector<float> &prevPositions,
const std::vector<float> &curPositions);
void draw(float timeStep) override;

View File

@@ -94,7 +94,7 @@ static void render()
}
glPopMatrix();
glTranslatef(-10, 0, 0);
glTranslatef(LAYER_X_OFFSET, 0, 0);
}

View File

@@ -1,5 +1,7 @@
#include "utils.hpp"
const float fmri::LAYER_X_OFFSET = -10;
std::default_random_engine &fmri::rng()
{
static std::default_random_engine rng;

View File

@@ -16,6 +16,11 @@ namespace fmri
{
typedef float DType;
/**
* The distance between layers in the visualisation.
*/
extern const float LAYER_X_OFFSET;
/**
* Identity function that simply returns whatever is put in.
*

View File

@@ -124,7 +124,7 @@ static Animation *getFullyConnectedAnimation(const fmri::LayerData &prevState, c
result.emplace_back(interactions[i], make_pair(i / shape[0] / normalizer, i % shape[0]));
}
return new ActivityAnimation(result, prevPositions.data(), curPositions.data(), -10);
return new ActivityAnimation(result, prevPositions.data(), curPositions.data());
}
static Animation *getDropOutAnimation(const fmri::LayerData &prevState,
@@ -145,7 +145,7 @@ static Animation *getDropOutAnimation(const fmri::LayerData &prevState,
results = deduplicate(results);
return new ActivityAnimation(results, prevPositions.data(), curPositions.data(), -10);
return new ActivityAnimation(results, prevPositions.data(), curPositions.data());
}
static Animation *getReLUAnimation(const fmri::LayerData &prevState,
@@ -165,7 +165,7 @@ static Animation *getReLUAnimation(const fmri::LayerData &prevState,
const auto maxValue = max_element(results.begin(), results.end())->first;
return new ActivityAnimation(results, prevPositions.data(), curPositions.data(), -10,
return new ActivityAnimation(results, prevPositions.data(), curPositions.data(),
[=](float i) -> ActivityAnimation::Color {
if (maxValue == 0) {
return {1, 1, 1};
@@ -174,7 +174,7 @@ static Animation *getReLUAnimation(const fmri::LayerData &prevState,
}
});
} else {
return new ImageInteractionAnimation(changes.data(), prevState.shape(), prevPositions, curPositions, -10);
return new ImageInteractionAnimation(changes.data(), prevState.shape(), prevPositions, curPositions);
}
}
@@ -197,7 +197,8 @@ static Animation *getNormalizingAnimation(const fmri::LayerData &prevState, cons
auto max_val = *max_element(scaling.begin(), scaling.end());
return new ActivityAnimation(entries, prevPositions.data(), curPositions.data(),-10, [=](float i) -> ActivityAnimation::Color {
return new ActivityAnimation(entries, prevPositions.data(), curPositions.data(),
[=](float i) -> ActivityAnimation::Color {
auto intensity = clamp((i - 1) / (max_val - 1), 0.f, 1.f);
return {
1 - intensity,
@@ -207,7 +208,7 @@ static Animation *getNormalizingAnimation(const fmri::LayerData &prevState, cons
});
} else {
transform(scaling.begin(), scaling.end(), scaling.begin(), [](float x) { return log(x); });
return new ImageInteractionAnimation(scaling.data(), prevState.shape(), prevPositions, curPositions, -10);
return new ImageInteractionAnimation(scaling.data(), prevState.shape(), prevPositions, curPositions);
}
}
@@ -233,7 +234,7 @@ Animation * fmri::getActivityAnimation(const fmri::LayerData &prevState, const f
return getReLUAnimation(prevState, curState, prevPositions, curPositions);
case LayerInfo::Type::Pooling:
return new PoolingLayerAnimation(prevState, curState, prevPositions, curPositions, -10);
return new PoolingLayerAnimation(prevState, curState, prevPositions, curPositions);
case LayerInfo::Type::LRN:
return getNormalizingAnimation(prevState, curState, prevPositions, curPositions);