Tensorflow tf1簡單實現小批量梯度下降

2021-09-06 16:59:30 字數 2416 閱讀 8480

tensorflow 程式通常分為兩部分:

第一部分構建計算圖譜(這稱為構造階段),

第二部分執行它(這是執行階段)。

建設階段通常構建乙個表示ml模型的計算圖譜,然後對其進行訓練計算。執行

階段通常執行迴圈,重複地求出訓練步驟,逐漸改進模型引數

## 載入包

import numpy as np

from sklearn.datasets import fetch_california_housing

import tensorflow as tf

from sklearn.preprocessing import standardscaler

## 載入資料

housing = fetch_california_housing(

)m, n = housing.data.shape

scl = standardscaler(

)housing_scl = scl.fit_transform(housing.data)

housing_sc_bias = np.c_[np.ones(

(m,1))

, housing_scl]

# 用佔位符,不對x的行數做限制

x = tf.placeholder(tf.float32, shape =

(none

, n +1)

, name =

'x')

y = tf.placeholder(tf.float32, shape =

(none,1

), name =

'y')

# 給theta 隨機初始值

theta = tf.variable(tf.random_uniform(

[n +1,

1],-

1.0,

1.0, seed =42)

, name=

'theta'

)# 計算誤差

y_prd = tf.matmul(x, theta, name =

'predictions'

)error = y_prd - y

# 類似 from functools import reduce

#reduce(lambda x1, x2: x1 + x2 ,[1,2,3])

mse = tf.reduce_mean(tf.square(error)

, name =

'mse'

)# 梯度下降優化器

learn_rate =

0.01

optimizer = tf.train.gradientdescentoptimizer(learning_rate = learn_rate)

training_op = optimizer.minimize(mse)

init = tf.global_variables_initializer(

)# 初始化變數

n_epochs =

10

batch_size =

100

n_batches = np.

int(np.ceil(m / batch_size)

)def

fetch_batch

(epoch, batch_index, batch_size)

:# 隨機獲取小批量資料

np.random.seed(epoch * n_batches + batch_index)

indices = np.random.randint(m, size = batch_size)

return housing_sc_bias[indices]

, housing.target.reshape(-1

,1)[indices]

with tf.session(

)as sess:

# 初始化變數

sess.run(init)

for epoch in

range

(n_epochs)

:# 總共迴圈次數

for batch_index in

range

(n_batches)

: x_batch, y_batch = fetch_batch(epoch, batch_index, batch_size)

# 資料匯入 類似於 sklearn.class.fit

sess.run(training_op, feed_dict =

) best_theta = theta.

eval()

print

(best_theta)

1 簡單的登入介面(1)

1 從左邊的 工具箱 中向設計窗體拖放1個label控制項,然後在縱向複製1個label控制項,接著依次對2個label控制項的 text 屬性進行修改,分別修改為 使用者名稱 密碼 2 從 工具箱 中拖放兩個textbox控制項將它們分別放在對應的label控制項的右邊,textbox2 密碼 的...

JSON簡單例子 1

package com.xuankai.json import org.json.jsonarray import org.json.jsonobject public class test jsonobject jsonobject new jsonobject jsoncontent strin...

簡單迷宮遊戲1

1.這個簡單的迷宮遊戲使用二維陣列來模擬迷宮,用 來模擬小人,通過 q w e a d z x c 來控制小人的上下左右共八個方向的運動。生成迷宮是在0和1中生成隨機數,1代表可走,0代表牆。這個程式主要的部分就是判斷,要走的下一步是不是符合一些要求,即 是否有出界,是否走的位置是牆,是否到達終點。...