2017-03-17 3 views
1

たとえば、次のコードには実装エラーがありませんか?神経網の活性化として組み込みテンソルフロー関数を使用するのは大丈夫ですか?

import tensorflow as tf 

x_data = [1, 2, 3] 
y_data = [1, 2, 3] 

W = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 
b = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 

X = tf.placeholder(tf.float32, name="X") 
Y = tf.placeholder(tf.float32, name="Y") 

hypothesis = tf.maximum(tf.add(tf.mul(W, X), b),0) 
cost = tf.reduce_mean(tf.square(hypothesis - Y)) 

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1) 

train_op = optimizer.minimize(cost) 
_, cost_val = tf.Session.run([train_op, cost], feed_dict={X: x_data, Y: y_data}) 

注上記のコードでは、私は私がそののようにわからないよう(0、tf.add(tf.mul(W、X)、B)) `tf.maximumを使用私はtf.maximumがバックプロパゲーションを計算できることを知らないので

さらに一般的な質問は、組み込みのテンソルフロー関数から構築された任意の活性化関数を、tf.Sessionのバックプロパゲーションで訓練することができますか?

私の質問で言えば、すべてのテンソルフロー演算にその勾配情報が付いていますか?

+1

私は[tf.nn.relu_layer](https://www.tensorflow.org/api_docs/python/tf/nn/relu_layer)だと思うが何であります欲しいです? – xxi

+0

@xxi一般的ではありません。 – julypraise

答えて

0

私はこのように考えています:いくつかの任意の関数を与えた場合、勾配は計算できますか?それはいいえ。それは、関数とそれが構成されている部分がどのようにテンソルフローで実装されているかにある程度依存します。

特に、コード内のコストは、最小二乗誤差損失であり、グローバル最小値を持つことが知られています。あなたのコードが実行されるいくつかのtweeksと

import tensorflow as tf 

x_data = [1, 2, 3] 
y_data = [1, 2, 3] 

W = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 
b = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 

X = tf.placeholder(tf.float32, name="X") 
Y = tf.placeholder(tf.float32, name="Y") 

hypothesis = tf.maximum(tf.add(tf.multiply(W, X), b),0) 
cost = tf.reduce_mean(tf.square(hypothesis - Y)) 

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1) 

train_op = optimizer.minimize(cost) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    _, cost_val = sess.run([train_op, cost], feed_dict={X: x_data, Y: y_data}) 
    print(cost_val) 

4.999 
関連する問題