Remove magix numbers.
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ static void render()
|
||||
}
|
||||
|
||||
glPopMatrix();
|
||||
glTranslatef(-10, 0, 0);
|
||||
glTranslatef(LAYER_X_OFFSET, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user