1. 程式人生 > >TensorFlow --- 建立第一個模型

TensorFlow --- 建立第一個模型

深度學習的四個步驟

(1)準備資料
(2)搭建模型
(3)迭代訓練
(4)使用模型
1.準備資料
這裡使用y=2x為主體,通過加入一些干擾噪聲讓它的等號變成約等於

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# np.linspace()函式。在指定的間隔內返回均勻間隔的數字
train_X = np.linspace(-1, 1, 100)
# Y的值。 
# np.random.randn(*train_X.shape) 等價與np.random.randn(100)
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3

# 顯示資料
plt.plot(train_X, train_Y, 'ro', label='Original data')
# 顯示圖例
plt.legend()
plt.show()

2.搭建模型
(1)正向搭建模型

# x和y為佔位符,一個代表x的輸入;另一個代表對應的真實值y
X = tf.placeholder('float')
Y = tf.placeholder('float')

# 模型引數。w被初始化程[-1,1]的隨機數,b的初始化為0,都是一維的數字
W = tf.Variable(tf.random_normal([1]), name='weight')
<tf.Variable 'weight:0' shape=(1,) dtype=float32_ref>

b = tf.Variable(tf.zeros([1]), name='bias')
<tf.Variable 'bias:0' shape=(1,) dtype=float32_ref>

# 前向結構
# tf.multiply()函式。兩個數相乘
z = tf.multiply(X, W) + b

(2)反向搭建模型

# 反向優化
# 定義一個cost,等於生成值與真實值的平方差
cost = tf.reduce_mean(tf.square(Y - z))
# 定義一個學習率,代表調整引數的速度
# 值越大,表示調整的速度越快,但不精確;值越小,表示調整的速度越慢,但精度高
learning_rate = 0.01
# GradientDescentOptimizer()。是一個封裝好的梯度下降函式
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

3迭代訓練
(1)訓練模型

# 初始化所有變數
init = tf.global_variables_initializer()
# 定義引數
training_epochs = 20
display_step = 2

# 啟動session
with tf.Session() as sess:
    sess.run(init)
    # 存放批次值和損失值
    plotdata = {"batchsize":[], "loss":[]}  
    for epoch in range(training_epochs):
        for(x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X:x, Y:y})

        # 顯示訓練中的詳細資訊
        if epoch % display_step == 0:
            loss = sess.run(cost, feed_dict={X:train_X, Y:train_Y})
            print("Epoch:", epoch+1, "cost=", loss, "W=", sess.run(W), "b=", sess.run(b))
            if not (loss == "NA"):
                plotdata["batchsize"].append(epoch)
                plotdata["loss"].append(loss)
    print("Finished!")
    print("cost=", sess.run(cost, feed_dict={X:train_X, Y:train_Y}), "w=", sess.run(w), "b=", sess.run(b))

(2)訓練模型視覺化

plotdata = {'batchsize':[], 'loss':[]}
def moving_average(a, w=10):
    if len(a) < w:
        return a[:]
    return [val if idx < w  else sum(a[(idx-w:idx)])/w for idx, val in enumerate(a)]

plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fittedline')
plt.legend()
plt.show()

pltdata['avgloss'] = moving_average(plotdata['loss'])
plt.figure(1)
plt.subplot(211)
plt.plot(plotdata['batchsize'], plotdata['avgloss'], 'b--')
plt.xlabel('Minibatch number')
plt.ylabel('Loss')
plt.title('Minbatch run vs. Training loss') 
plt.show()

4.使用模型

print('x=0.2, z=', sess.run(z, feed_dict={X:0.2}))
結果為:
x=0.2, z= [0.4408053]

相關推薦

TensorFlow --- 建立第一模型

深度學習的四個步驟 (1)準備資料 (2)搭建模型 (3)迭代訓練 (4)使用模型 1.準備資料 這裡使用y=2x為主體,通過加入一些干擾噪聲讓它的等號變成約等於 import tenso

TensorFlow訓練第一模型

簡述 下面有非常詳細的程式碼註釋 這裡的create資料的時候,其實就是建立了一個很簡單的模型,就是說,一條y= 0.1x+0.3的直線。 然後,我們建立了兩個變數,通過梯度下降的方式,不斷迭代,就可

Tensorflow搭建第一邏輯迴歸(logistic regression,其實也就是單層感知機)模型

資料集: 使用吳恩達機器學習課程:https://study.163.com/course/courseMain.htm?courseId=1004570029 章節8中的課時60:程式設計作業:Logistic迴歸的資料中的資料集ex2data1.txt(訓練集)和ex2data2.t

識別貓的單隱藏層神經網絡(我的第一模型

負數 所有 sha 分類 col 缺少 right shadow 一個 摘要:算法詳解;代碼;可視化查看超參數影響 目標:識別一張圖是不是貓 數據集:訓練數據209張64*64 測試數據50張 64*64 方案:二分分類法 算法:logistic回歸 ,

微服務分散式事務實戰(五)準備資料庫和建立第一微服務

1)資料庫準備 在資料庫中mysql 分別建立2個數據庫forum1和forum2 forum1 下建立表block forum2下建立表Theme sql程式碼如下: 1 資料庫1Forum1: CREATE DATABASE IF NOT EXISTS forum1; USE forum

(一)MFC學習之建立第一視窗

環境:windows10+vs2017 需要兩個類: 1,CMyWnd,繼承自CFrameWnd(視窗框架類,視窗有就是這個類的例項化物件) 2,CMyApp,繼承自CWinApp(app類,在這個類中的InitInstance方法中例項化視窗,初始化自己的視窗型別成員變數) 使

(django)4建立第一檢視

建立檢視 開啟 demo 應用下的 views.py 檔案,新增程式碼 from django.http import HttpResponse from django.shortcuts import render # Create your views here. def index(reque

IOS初學-建立第一專案

建立屬於自己的第一個專案 1.使用XCode9開發 2.使用Swift4 一.建立新的專案 點選XCode開發工具 這裡建立的是IOS專案             &nb

使用VS建立第一窗體應用程式

首先安裝好VS 安裝好VS,還需安裝相關的工具,開啟VS,在工具欄裡選獲取工具和更新       選.net桌面開發,然後點修改,等安裝完   安裝好後,開啟VS,選擇檔案--新建--新建專案  

【手把手擼一個腳手架】第一步, 建立第一命令

WTF 不知道腳手架是啥? 那抓緊惡補一下前端基礎把兄die, 相信不久的以後你就會回來的. ps: 本文檔案操作基於 bash, mac 同學直接用 terminal 或 iterm 即可, win 使用者推薦使用 git bash 腳手架, 源自於建築行業, 通俗的講就是一個專

TensorFlow 載入多模型的方法

採用 TensorFlow 的時候,有時候我們需要載入的不止是一個模型,那麼如何載入多個模型呢? 原文:bretahajek.com/2017/04/imp… 關於 TensorFlow 可以有很多東西可以說。但這次我只介紹如何匯入訓練好的模型(圖),因為我做不到匯入第二個模型並將它和第一個模型

android studio教程-建立第一專案Hello World

更多知識-程式猿:apeit 在前面文章講了android開發環境的部署,那麼我們用hello world和android studio打聲招呼吧! 第一步,開啟android studio 輸入你的專案名稱“Hello World”. “Company Domian”:暫時你就隨便填

vue入門(一)安裝及建立第一專案

前端近幾年來飛速發展,各種技術框架層出不窮,架構模式也從主流MVC慢慢轉向MVVM。使用AngularJS、React和Vue.js等框架進行前端開發已經成為趨勢。因此我也開始了vue.js的修煉之路(之所以選擇vue.js是因其入門門檻低)。 一、安裝 為了讓我們建立Vue專案更加容易,我

【3】Django建立第一專案

天地所以能長且久者,以其不自生,故能長生。 ——老子《道德經》 寫在前面:Django在學習的過程中,我們會參考官方文件,從兩部分進行講解,第一部分主要是一個入門專案的搭建開發,第二部分是核心的講解。過程中可能會有一些配置或者技術點不會明確的講解,入門專案要求是能寫出程式碼、能跟著文件寫出專案,能瞭解

【4】Django 建立第一模組應用

大成若缺,其用不弊。大盈若衝,其用不窮。大直若屈。大巧若拙。大辯若訥。靜勝躁,寒勝熱。清靜為天下正 ——老子《道德經》 本章內容 建立應用(app) 開發第一個檢視(View) URL訪問配置的巢狀(urls) 1. 建立專案的子模組應用 上一節內容中,我們建立了一個django專

[Django_1]建立第一專案

1、安裝 pip install Django 2、檢視版本號 django-admin --version 輸出了版本號說明安裝正確 3、建立第一個專案 django-admin.py startproject HelloDjango tree-不顯示

Tensorflow搭建第一神經網路

簡述 搭建這個神經網路 其實是從一個層到10層再到10層的這樣的一個神經網路。(畫圖醜。。。求諒解。。就別私戳了) 解析 初始的輸入的矩陣為:[[1],300個,[-1]] 大致這樣的 在增加一層的那個函式中,最為經典的地方是,偏置(biases)的第一個

tensorflow第一專案MNIST資料集

首先登陸網址: http://yann.lecun.com/exdb/mnist/ 下載4個檔案  下載完之後,解壓出來到資料夾 耐心等待,網上好慢。 放到當前的路徑下:  檢視資料集驗證圖片 檢視資料集的驗證標籤 檢視資料集的測試圖片

vuejs環境搭建及建立第一專案

一、vuejs環境搭建 vuejs的執行是基於node和git的所以在安裝Vuejs時要先安裝著兩個軟體才能成功安裝vuejs。 1、node安裝 在node官網下載node安裝軟體,下載完成後軟體如下 ,雙擊安裝軟體,安裝完成後開啟cmd,執行node -v驗證是否成功安裝

C++ STM32 程式設計 003 使用CubeMX建立第一程式

        GPIO是stm32的基礎,單獨時間點上,每個GPIO都可以作為輸出,或輸入,或中斷,或特殊功能使用(特殊功能是指系統預設的功能使用引腳),每個時間點上,只能使用一種方式。         首先,我們