2017-05-07 5 views
1

Ich habe ein Trainingsmodell wieTensorflow begrenzen den Bereich der tf.Variables

Y = w * X + b 

wobei Y und X die Ausgangs- und Eingangs Platzhalter, W und B sind die Vektoren
Ich weiß bereits den Wert von W nur 0 oder 1 sein, während b immer noch tf.float32 ist.

Wie könnte ich den Bereich der Variablen w begrenzen, wenn ich sie definiere?
oder
Kann ich zwei verschiedene Lernraten haben? Die Rate für w ist 1 oder -1 und die Rate für b ist 0,0001 wie üblich.

Antwort

4

Es gibt keine Möglichkeit, Ihre Variable während der Aktivierung zu begrenzen. Aber Sie können es nach jeder Iteration einschränken. Hier ist eine Möglichkeit, dies zu tun mit tf.where():

import tensorflow as tf 

a = tf.random_uniform(shape=(3, 3)) 

b = tf.where(
    tf.less(a, tf.zeros_like(a) + 0.5), 
    tf.zeros_like(a), 
    tf.ones_like(a) 
) 

with tf.Session() as sess: 
    A, B = sess.run([a, b]) 
    print A, '\n' 
    print B 

Welche wird alles über 0,5 bis 1 und alles andere konvertieren 0:

[[ 0.2068541 0.12682056 0.73839438] 
[ 0.00512838 0.43465161 0.98486936] 
[ 0.32126224 0.29998791 0.31065524]] 

[[ 0. 0. 1.] 
[ 0. 0. 1.] 
[ 0. 0. 0.]] 
Verwandte Themen