diff --git a/src/ActivityAnimation.cpp b/src/ActivityAnimation.cpp index 7922ad3..5b9387c 100644 --- a/src/ActivityAnimation.cpp +++ b/src/ActivityAnimation.cpp @@ -19,15 +19,15 @@ ActivityAnimation::Color ActivityAnimation::colorBySign(float intensity) } ActivityAnimation::ActivityAnimation( - const std::vector>> &interactions, const float *aPositions, - const float *bPositions, float xDist) : - ActivityAnimation(interactions, aPositions, bPositions, xDist, ActivityAnimation::colorBySign) + const std::vector>> &interactions, + const float *aPositions, const float *bPositions) : + ActivityAnimation(interactions, aPositions, bPositions, ActivityAnimation::colorBySign) { } ActivityAnimation::ActivityAnimation( - const std::vector>> &interactions, - const float *aPositions, const float *bPositions, float xDist, ColoringFunction coloring) + const std::vector>> &interactions, + 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)); } } } diff --git a/src/ActivityAnimation.hpp b/src/ActivityAnimation.hpp index 5b58804..dca62d2 100644 --- a/src/ActivityAnimation.hpp +++ b/src/ActivityAnimation.hpp @@ -15,10 +15,12 @@ namespace fmri typedef std::array Color; typedef std::function ColoringFunction; - ActivityAnimation(const std::vector>> &interactions, - const float *aPositions, const float *bPositions, float xDist); - ActivityAnimation(const std::vector>> &interactions, - const float *aPositions, const float *bPositions, float xDist, ColoringFunction coloring); + ActivityAnimation( + const std::vector>> &interactions, + const float *aPositions, const float *bPositions); + ActivityAnimation( + const std::vector>> &interactions, + const float *aPositions, const float *bPositions, ColoringFunction coloring); void draw(float timeScale) override; static Color colorBySign(float intensity); diff --git a/src/ImageInteractionAnimation.cpp b/src/ImageInteractionAnimation.cpp index ee576af..bfc2519 100644 --- a/src/ImageInteractionAnimation.cpp +++ b/src/ImageInteractionAnimation.cpp @@ -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 &shape, - const std::vector &prevPositions, - const std::vector &curPositions, float xDist) : +ImageInteractionAnimation::ImageInteractionAnimation(const DType *data, const std::vector &shape, const std::vector &prevPositions, + const std::vector &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; } } diff --git a/src/ImageInteractionAnimation.hpp b/src/ImageInteractionAnimation.hpp index 2b03b19..a716e16 100644 --- a/src/ImageInteractionAnimation.hpp +++ b/src/ImageInteractionAnimation.hpp @@ -9,7 +9,8 @@ namespace fmri class ImageInteractionAnimation : public Animation { public: - ImageInteractionAnimation(const DType* data, const std::vector& shape, const std::vector& prevPositions, const std::vector& curPositions, float xDist); + ImageInteractionAnimation(const DType *data, const std::vector &shape, const std::vector &prevPositions, + const std::vector &curPositions); virtual void draw(float step); private: diff --git a/src/PoolingLayerAnimation.cpp b/src/PoolingLayerAnimation.cpp index a79d09d..b6af9eb 100644 --- a/src/PoolingLayerAnimation.cpp +++ b/src/PoolingLayerAnimation.cpp @@ -3,7 +3,6 @@ #include #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 &prevPositions, - const std::vector &curPositions, float xDist) : + const std::vector &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; } } diff --git a/src/PoolingLayerAnimation.hpp b/src/PoolingLayerAnimation.hpp index b4e2485..6f29712 100644 --- a/src/PoolingLayerAnimation.hpp +++ b/src/PoolingLayerAnimation.hpp @@ -9,7 +9,9 @@ namespace fmri class PoolingLayerAnimation : public Animation { public: - PoolingLayerAnimation(const LayerData& prevData, const LayerData& curData, const std::vector& prevPositions, const std::vector& curPositions, float xDist); + PoolingLayerAnimation(const LayerData &prevData, const LayerData &curData, + const std::vector &prevPositions, + const std::vector &curPositions); void draw(float timeStep) override; diff --git a/src/main.cpp b/src/main.cpp index b0acd73..24c3581 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -94,7 +94,7 @@ static void render() } glPopMatrix(); - glTranslatef(-10, 0, 0); + glTranslatef(LAYER_X_OFFSET, 0, 0); } diff --git a/src/utils.cpp b/src/utils.cpp index a7ef521..90b3f0f 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -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; diff --git a/src/utils.hpp b/src/utils.hpp index 2b6b298..d689b51 100644 --- a/src/utils.hpp +++ b/src/utils.hpp @@ -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. * diff --git a/src/visualisations.cpp b/src/visualisations.cpp index f2457bd..c9ffd35 100644 --- a/src/visualisations.cpp +++ b/src/visualisations.cpp @@ -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,16 +165,16 @@ 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}; - } else { - return {1 - i / maxValue, 1 - i / maxValue, 1}; - } - }); + if (maxValue == 0) { + return {1, 1, 1}; + } else { + return {1 - i / maxValue, 1 - i / maxValue, 1}; + } + }); } else { - return new ImageInteractionAnimation(changes.data(), prevState.shape(), prevPositions, curPositions, -10); + return new ImageInteractionAnimation(changes.data(), prevState.shape(), prevPositions, curPositions); } } @@ -197,17 +197,18 @@ 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 { - auto intensity = clamp((i - 1) / (max_val - 1), 0.f, 1.f); - return { - 1 - intensity, - 1, - 1 - }; - }); + 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, + 1, + 1 + }; + }); } 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);