tensorflow
PythonでTensorFlowの単純な線形回帰構造
サーチ…
前書き
従来の統計で広く使用されているモデルは、線形回帰モデルです。この記事では、このタイプのモデルの段階的な実装に従うことを目的としています。私たちは単純な線形回帰構造を表現しようとしています。
本研究では、 x軸上の子供の年齢とy軸上の子供の高さを分析する。年齢を用いて単純な線形回帰を適用して、子供の身長を予測しようとする。[TFでは最良のWとbを見つける]
パラメーター
パラメータ | 説明 |
---|---|
train_X | 情報のx次元を持つnp配列 |
train_Y | y次元の情報を持つnp配列 |
備考
私はモデル、コスト、列車、起動要素の一部の動作を追跡するためにTensorBoardのシンタクスを使用しました。
with tf.name_scope("") as scope:
使用された輸入品:
import numpy as np
import tensorflow as tf
使用されるアプリケーションと言語の種類:
私はPythonで開発された従来のコンソール実装のアプリケーションタイプを使用して、この例を表しています。
使用されたTensorFlowのバージョン:
1.0.1
単純回帰関数コード構造
関数定義:
def run_training(train_X, train_Y):
入力変数:
X = tf.placeholder(tf.float32, [m, n])
Y = tf.placeholder(tf.float32, [m, 1])
重量とバイアス表現
W = tf.Variable(tf.zeros([n, 1], dtype=np.float32), name="weight")
b = tf.Variable(tf.zeros([1], dtype=np.float32), name="bias")
線形モデル:
with tf.name_scope("linear_Wx_b") as scope:
activation = tf.add(tf.matmul(X, W), b)
コスト:
with tf.name_scope("cost") as scope:
cost = tf.reduce_sum(tf.square(activation - Y)) / (2 * m)
tf.summary.scalar("cost", cost)
トレーニング:
with tf.name_scope("train") as scope:
optimizer = tf.train.GradientDescentOptimizer(0.07).minimize(cost)
TensorFlowセッション:
with tf.Session() as sess:
merged = tf.summary.merge_all()
writer = tf.summary.FileWriter(log_file, sess.graph)
注: マージされたライターは、モデルの動作を追跡するTensorBoard戦略の一部です。
init = tf.global_variables_initializer()
sess.run(init)
トレーニングループの1.5k倍を繰り返す:
for step in range(1500):
result, _ = sess.run([merged, optimizer], feed_dict={X: np.asarray(train_X), Y: np.asarray(train_Y)})
writer.add_summary(result, step)
プリントトレーニング費用:
training_cost = sess.run(cost, feed_dict={X: np.asarray(train_X), Y: np.asarray(train_Y)})
print "Training Cost: ", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n'
訓練を受けたモデルに基づく具体的な予測:
print "Prediction for 3.5 years"
predict_X = np.array([3.5], dtype=np.float32).reshape([1, 1])
predict_X = (predict_X - mean) / std
predict_Y = tf.add(tf.matmul(predict_X, W), b)
print "Child height(Y) =", sess.run(predict_Y)
メインルーチン
def main():
train_X, train_Y = read_data()
train_X = feature_normalize(train_X)
run_training(train_X, train_Y)
注:レビュー機能の依存関係を覚えておいてください。 read_data 、 feature_normalizeおよびrun_training
正規化ルーチン
def feature_normalize(train_X):
global mean, std
mean = np.mean(train_X, axis=0)
std = np.std(train_X, axis=0)
return np.nan_to_num((train_X - mean) / std)
データ読み込みルーチン
def read_data():
global m, n
m = 50
n = 1
train_X = np.array(
配列の内部データ
).astype('float32')
train_Y = np.array(
配列の内部データ
).astype('float32')
return train_X, train_Y
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow