[PYTHON] Höchstwahrscheinlich Schätzung des Mittelwerts und der Varianz mit TensorFlow

Es gibt ein Missverständnis, dass Tensorflow eine Bibliothek für maschinelles Lernen ist, deshalb habe ich versucht, den Mittelwert und die Varianz zu finden, um mein Verständnis zu vertiefen.

Wenn nur der Durchschnitt, Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln. .

Gradient decent

python


import matplotlib.pylab as plt
%matplotlib inline
import numpy as np
import tensorflow as tf

x_train = np.random.randn(100) * 10 + 50

n_itr = 10000

m = tf.Variable([30.0], tf.float32)
s = tf.Variable([3.0], tf.float32)
x = tf.placeholder(tf.float32)
N = tf.count_nonzero(x, dtype=tf.float32)

loss = N / 2 * tf.log(2 * np.pi * s**2) + 1.0 / (2 * s**2) * tf.reduce_sum(tf.square(x - m))

for lr in [0.1, 0.01, 0.001]:

    optimizer = tf.train.GradientDescentOptimizer(lr)
    train = optimizer.minimize(loss)

    init = tf.global_variables_initializer()
    sess = tf.Session()
    sess.run(init)

    est_m = []
    est_s = []
    for i in range(n_itr):
        sess.run(train, {x:x_train})
        est_m.append(sess.run([m]))
        est_s.append(sess.run([s]))
        
    est_m = np.array(est_m)
    est_s = np.array(est_s)
    plt.plot(est_s.reshape(n_itr)[::100], est_m.reshape(n_itr)[::100], marker=".", label="lr={}".format(lr))

plt.title("batch gradient decent")
plt.xlabel("std")
plt.ylabel("mean")
plt.legend()
plt.show();

Unknown-5.png

RMS Prop

python


n_itr = 1000

for lr in [1, 0.5, 0.1]:

    optimizer = tf.train.RMSPropOptimizer(lr)
    train = optimizer.minimize(loss)

    init = tf.global_variables_initializer()
    sess = tf.Session()
    sess.run(init)

    est_m = []
    est_s = []
    for i in range(n_itr):
        sess.run(train, {x:x_train})
        est_m.append(sess.run([m]))
        est_s.append(sess.run([s]))
        
    est_m = np.array(est_m)
    est_s = np.array(est_s)
    plt.plot(est_s.reshape(n_itr)[::10], est_m.reshape(n_itr)[::10], marker=".", label="lr={}".format(lr))

plt.title("batch RMS Prop")
plt.xlabel("std")
plt.ylabel("mean")
plt.legend()
plt.show();

Unknown-4.png

Adam

python


n_itr = 1000

for lr in [5, 1, 0.1, 0.01]:

    optimizer = tf.train.AdamOptimizer(lr)
    train = optimizer.minimize(loss)

    init = tf.global_variables_initializer()
    sess = tf.Session()
    sess.run(init)

    est_m = []
    est_s = []
    for i in range(n_itr):
        sess.run(train, {x:x_train})
        est_m.append(sess.run([m]))
        est_s.append(sess.run([s]))
        
    est_m = np.array(est_m)
    est_s = np.array(est_s)
    plt.plot(est_s.reshape(n_itr)[::10], est_m.reshape(n_itr)[::10], marker=".", label="lr={}".format(lr))

plt.title("batch Adam")
plt.xlabel("std")
plt.ylabel("mean")
plt.legend()
plt.show();

Unknown-3.png

AdaGrad

python


n_itr = 1000

for lr in [20, 10, 5, 1]:

    optimizer = tf.train.AdagradOptimizer(lr)
    train = optimizer.minimize(loss)

    init = tf.global_variables_initializer()
    sess = tf.Session()
    sess.run(init)

    est_m = []
    est_s = []
    for i in range(n_itr):
        sess.run(train, {x:x_train})
        est_m.append(sess.run([m]))
        est_s.append(sess.run([s]))
        
    est_m = np.array(est_m)
    est_s = np.array(est_s)
    plt.plot(est_s.reshape(n_itr)[::10], est_m.reshape(n_itr)[::10], marker=".", label="lr={}".format(lr))

plt.title("batch AdaGrad")
plt.xlabel("std")
plt.ylabel("mean")
plt.legend()
plt.show();

Unknown-2.png

AdaDelta

python


n_itr = 1000

for lr in [5000, 1000, 100]:

    optimizer = tf.train.AdadeltaOptimizer(lr)
    train = optimizer.minimize(loss)

    init = tf.global_variables_initializer()
    sess = tf.Session()
    sess.run(init)

    est_m = []
    est_s = []
    for i in range(n_itr):
        sess.run(train, {x:x_train})
        est_m.append(sess.run([m]))
        est_s.append(sess.run([s]))
        
    est_m = np.array(est_m)
    est_s = np.array(est_s)
    plt.plot(est_s.reshape(n_itr)[::10], est_m.reshape(n_itr)[::10], marker=".", label="lr={}".format(lr))

plt.title("batch AdaDelta")
plt.xlabel("std")
plt.ylabel("mean")
plt.legend()
plt.show();

Unknown-1.png

Recommended Posts

Höchstwahrscheinlich Schätzung des Mittelwerts und der Varianz mit TensorFlow
Vor- und Nachteile der wahrscheinlichsten Schätzmethode
Höchstwahrscheinlich Schätzung verschiedener Verteilungen mit Pyro
Beispiel für Python-Code für die Exponentialverteilung und die wahrscheinlichste Schätzung (MLE)
Versuchen wir es noch einmal. Wahrscheinlichste Schätzung und Anpassung des Modells (Wahrscheinlichkeitsverteilung) ① Diskrete Wahrscheinlichkeitsverteilung
Versuchen wir es noch einmal. Schätzung der meisten Wahrscheinlichkeiten und Anpassung des Modells (Wahrscheinlichkeitsverteilung) ② Kontinuierliche Wahrscheinlichkeitsverteilung
Höchstwahrscheinlich Schätzungsimplementierung des Themenmodells in Python
Minimum-Square-Methode und wahrscheinlichste Schätzmethode (Vergleich durch Modellanpassung)
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Vergleichen Sie rohen TensorFlow mit tf.contrib.learn und Keras
pix2pix tensorflow2 Aufzeichnung von Versuch und Irrtum
Die Geschichte der numerischen Berechnung von Differentialgleichungen mit TensorFlow 2.0
Echtzeitberechnung des Durchschnittswertes mit Corroutine
2. Mittelwert und Standardabweichung beim neuronalen Netz!
Visualisierung von CNN-Feature-Maps und -Filtern (Tensorflow 2.0)
Mischen Sie Hunderttausende von Bildern gleichmäßig mit Tensorflow.
Koexistenz von Fcitx und Zoom ~ Mit japanischer Lokalisierung ~
Rezeptsammlung zum Vergleich der Versionen 1 und 2 von TensorFlow (Teil 1)
Skript zum Twittern mit Vielfachen von 3 und Zahlen mit 3 !!
Konzept des Bayes'schen Denkens (2) ... Bayes'sche Schätzung und Wahrscheinlichkeitsverteilung
TRIE-Baumimplementierung mit Python und LOUDS
Wavelet-Konvertierung von Bildern mit PyWavelets und OpenCV
Berücksichtigung der Neigungsbewertung und der Genauigkeit der Effektschätzung
Portfoliooptimierung mit Python (Markovitz-Durchschnittsverteilungsmodell)
Fortsetzung der Multi-Plattform-Entwicklung mit Electron und Python
Sequentielle Berechnung des Durchschnittswertes mit Online-Algorithmus
Beispiel für das Lesen und Schreiben von CSV mit Python