Initial commit.
[pytorch.git] / mi_estimator.py
index f8b859d..68fd51f 100755 (executable)
@@ -1,21 +1,9 @@
 #!/usr/bin/env python
 
-#########################################################################
-# This program is free software: you can redistribute it and/or modify  #
-# it under the terms of the version 3 of the GNU General Public License #
-# as published by the Free Software Foundation.                         #
-#                                                                       #
-# This program is distributed in the hope that it will be useful, but   #
-# WITHOUT ANY WARRANTY; without even the implied warranty of            #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      #
-# General Public License for more details.                              #
-#                                                                       #
-# You should have received a copy of the GNU General Public License     #
-# along with this program. If not, see <http://www.gnu.org/licenses/>.  #
-#                                                                       #
-# Written by and Copyright (C) Francois Fleuret                         #
-# Contact <francois.fleuret@idiap.ch> for comments & bug reports        #
-#########################################################################
+# Any copyright is dedicated to the Public Domain.
+# https://creativecommons.org/publicdomain/zero/1.0/
+
+# Written by Francois Fleuret <francois@fleuret.org>
 
 import argparse, math, sys
 from copy import deepcopy
@@ -38,19 +26,20 @@ else:
 parser = argparse.ArgumentParser(
     description = '''An implementation of a Mutual Information estimator with a deep model
 
-Three different toy data-sets are implemented:
+    Three different toy data-sets are implemented, each consists of
+    pairs of samples, that may be from different spaces:
 
- (1) Two MNIST images of same class. The "true" MI is the log of the
-     number of used MNIST classes.
   (1) Two MNIST images of same class. The "true" MI is the log of the
+    number of used MNIST classes.
 
- (2) One MNIST image and a pair of real numbers whose difference is
-     the class of the image. The "true" MI is the log of the number of
-     used MNIST classes.
   (2) One MNIST image and a pair of real numbers whose difference is
+    the class of the image. The "true" MI is the log of the number of
+    used MNIST classes.
 
- (3) Two 1d sequences, the first with a single peak, the second with
-     two peaks, and the height of the peak in the first is the
-     difference of timing of the peaks in the second. The "true" MI is
-     the log of the number of possible peak heights.''',
   (3) Two 1d sequences, the first with a single peak, the second with
+    two peaks, and the height of the peak in the first is the
+    difference of timing of the peaks in the second. The "true" MI is
+    the log of the number of possible peak heights.''',
 
     formatter_class = argparse.ArgumentDefaultsHelpFormatter
 )
@@ -197,6 +186,8 @@ def create_image_values_pairs(train = False):
 
 ######################################################################
 
+#
+
 def create_sequences_pairs(train = False):
     nb, length = 10000, 1024
     noise_level = 2e-2
@@ -229,9 +220,6 @@ def create_sequences_pairs(train = False):
     noise = b.new(b.size()).normal_(0, noise_level)
     b = b + noise
 
-    # a = (a - a.mean()) / a.std()
-    # b = (b - b.mean()) / b.std()
-
     return a, b, ha
 
 ######################################################################