私はちょうど最適化問題のためにPythonでTensorflowを使い始めました。そして、私はちょうど本当に単純な回帰モデルで試してみました。しかし、私が得た結果(傾きと定数の両方)は、私が期待しているところからかなり離れているように見えました。私が間違っていたことを指摘することはできますか?(コードは実行されますが、Tensorflowを適切に使用すれば、Tensorflow:単純な線形回帰
私がした:
1インポートモジュール:
import matplotlib.pyplot as plt
import numpy as np
import random as ran
import tensorflow as tf
2線状構造(Y = 3 X + 4 +誤差)に基づいてデータを作成します。設定
train_X = np.array(range(-20,20,1))
b = 3; c = 4; sd = 0.5;
error = np.random.normal(loc=0.0, scale=sd, size=40);
deterministic = b* train_X + c;
train_Y = np.add(deter,error)
3最適化のため:
X = tf.placeholder(tf.float32,[40])
Y = tf.placeholder(tf.float32,[40])
beta = tf.Variable(np.random.randn(), name="beta")
alpha = tf.Variable(np.random.randn(), name="alpha")
n_samples = 40
learning_rate = 0.01
pred_full = tf.add(tf.scalar_mul(beta, X),alpha)
cost = tf.reduce_mean(tf.pow(tf.subtract(Y, pred_full),2))
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
4実行中:
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
sess.run(optimizer, feed_dict={X: train_X, Y: train_Y})
result = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
result_beta = sess.run(beta, feed_dict={X: train_X, Y: train_Y})
result_alpha = sess.run(alpha, feed_dict={X: train_X, Y: train_Y})
print('result:', result, ';', 'result_beta:', result_beta, ';', 'result_alpha:',result_alpha)
私が得た結果は次のとおりです。
明らかresult: 1912.99 ; result_beta: 6.75786 ; result_alpha: -0.209623
ベータは3に近いものになっているとalhpaは、私は私のコードで何が悪かったのか疑問に思って4.に近いすべきですか?あなたは勾配降下の複数の反復のためにオプティマイザを複数回呼び出す必要があり
おかげ
よくモデルを1回だけ実行します...? (コスト、オプティマイザ、結果_アルファ、結果_ベータ)、フィード= ...) – dv3