1. 程式人生 > >TensorFlow技術解析與實戰 8 第一個tensorflow程式

TensorFlow技術解析與實戰 8 第一個tensorflow程式


TensorFlow的執行方式分如下4步:

(1)載入資料及定義超引數

(2)構建網路

(3)訓練模型

(4)評估模型和進行預測

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import tensorflow as tf 
import numpy as np 

# y = x^2 - 0.5

# 生成及載入資料
x_data = np.linspace(-1, 1, 300)[:, np.newaxis]  #構建了300個點
noise = np.random.normal(0, 0.05, x_data.shape)  #加入一些噪聲點
y_data = np.square(x_data) - 0.5 + noise

xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1])

# 構建網路模型
# y = weights*x + biases
def add_layer(inputs, in_size, out_size, activation_function=None):
	weights = tf.Variable(tf.random_normal([in_size, out_size]))  # in_size * out_size 大小的矩陣
	biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)  # 1 X out_size 的矩陣
	Wx_plus_b = tf.matmul(inputs, weights) + biases  # 矩陣相乘
	if activation_function is None:
		outputs = Wx_plus_b
	else:
		outputs = activation_function(Wx_plus_b)
	return outputs

# 構建隱藏層,假設隱藏層有10個神經元
h1 = add_layer(xs, 1, 20, activation_function=tf.nn.relu)
# 構建輸出層,假設輸出層和輸入層一樣,有1個神經元
prediction = add_layer(h1, 20, 1, activation_function=None)

# 計算預測值和真實值間的誤差
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

# 訓練模型
init = tf.global_variables_initializer()   #初始化所有變數
sess = tf.Session()
sess.run(init)
for i in range(1000):
	sess.run(train_step, feed_dict={xs:x_data, ys:y_data})
	if i % 50 == 0:
		print(sess.run(loss, feed_dict={xs:x_data, ys:y_data}))
8.2 超引數的設定

     所謂超引數就是指機器學習模型裡的框架引數。與權重引數不同的是,它是需要手動設定、不斷試錯的。

     學習率是一個最常設定的超引數。學習率設定得越大,訓練時間越短,速度越快;而學習率設定得越小,訓練準確度越高。那麼,如何確定一個比較好的學習率呢?只能通過實驗的方法。例如,先設定0.01,觀察損失值的變化,然後嘗試0.001、0.0001,最終確定一個比較合適的學習率。

      我們也可以設定可變的學習率。那麼,怎樣才算是準確率不再提高,應該停止訓練了呢?例如,在訓練過程中記錄最佳的準確率,在連續n輪沒有達到最佳的準確率時,便可以認為準確率不再提高,就可以停止訓練,稱為“early stopping”,這個策略叫做“no-improvement-in-n”規則(例如,我們設定連續10輪準確率不再變動,就認為不再提高)此時,讓學習率減半;下次滿足是,再讓學習率減半。這樣,在逐漸解決最優解時,我們的學習率越來越小,準確率就越來越高。

      mini-batch大小是另一個最常設定的超引數。每批大小決定了權重的更新規則。例如,大小為32時,就是把32個樣本的梯度全部計算完,然後求平均值,去更新權重。批次越小訓練的速度就慢。那麼,如何選擇批次大小呢》也需要結合機器的硬體效能以及資料集的大小來設定。

      正則項係數是另一個常用的超引數。但是,設定沒有太多可遵循的規則,一般憑經驗。一般來說,如果在較複雜的網路發現出現了明顯的過擬合(在訓練資料準確率很高但測試資料準確率反而下降),可以考慮增加此項。初學者可以一開始設定為0,然後確定好一個比較好的學習率後,再給lamda一個值,隨後根據準確率再進行精細調整。

相關推薦

TensorFlow技術解析實戰 8 一個tensorflow程式

TensorFlow的執行方式分如下4步: (1)載入資料及定義超引數 (2)構建網路 (3)訓練模型 (4)評估模型和進行預測 # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding(

李嘉璇 TensorFlow技術解析實戰 四章筆記 TensorFlow基礎知識

系統架構 最下層是網路通訊層和裝置管理層。網路通訊層包括 gRPC(google Remote Procedure Call Protocol)和遠端直接資料存取(Remote DirectMemory Access, RDMA),這都是在分散式計算時需要用到的。裝置管理層包

TensorFlow技術解析實戰》高清中文PDF+源代碼

mage vpd roc 代碼 深度學習 tensor 深入 shadow 基礎 下載:https://pan.baidu.com/s/1jdZ9eSrZ7xnsbbMIUO17qQ 《TensorFlow技術解析與實戰》高清中文PDF+源代碼 高清中文PDF,311頁,帶

分享《TensorFlow技術解析實戰》高清中文PDF+原始碼

下載:https://pan.baidu.com/s/1jdZ9eSrZ7xnsbbMIUO17qQ 《TensorFlow技術解析與實戰》高清中文PDF+原始碼 高清中文PDF,311頁,帶目錄和書籤,文字可以複製貼上,彩色配圖。配套原始碼。經典書籍。本書從深度學習的基礎講起,深入TensorFlow框

分享《TensorFlow技術解析實戰》高清中文PDF+源代碼

roc 文字 深度 log 51cto 復制 shadow proc http 下載:https://pan.baidu.com/s/1jdZ9eSrZ7xnsbbMIUO17qQ 《TensorFlow技術解析與實戰》高清中文PDF+源代碼 高清中文PDF,311頁,帶目

分享《TensorFlow技術解析實戰》+PDF+源碼+李嘉璇

下載 com .com type 51cto oss ces ESS 源代碼分析 下載:https://pan.baidu.com/s/1GQC9T7PBjaPnY2pa-ejQaA更多資料分享:http://blog.51cto.com/14087171 《TensorF

TensorFlow 技術解析實戰 筆記 01

TensorFlow 如何構建一個流圖呢,構建圖的第一步是建立各個節點。 import tensorflow as tf # 建立一個常量運算操作,產生一個 1×2 矩陣 matrix1 = tf.constant([[3., 3.]]) # 建立另外一個常量運算操作,產生一個 2×1 矩陣 m

TensorFlow技術解析實戰》高清中文PDF+原始碼高清完整版免費下載 《TensorFlow技術解析實戰》高清中文PDF+原始碼高清完整版免費下載

《TensorFlow技術解析與實戰》高清中文PDF+原始碼高清完整版免費下載 下載地址:https://pan.baidu.com/s/1eQdu3J9GvEyREBVvbs0msw 《TensorFlow技術解析與實戰》高清中文PDF+原始碼 高清中文PDF,311頁,帶目錄和書籤,文字可以

TensorFlow技術解析實戰 10 人臉識別

10.2 人臉識別的技術流程         人臉識別系統一般主要包括4個組成部分,分別為人臉影象採集及檢測、人臉影象預處理、人臉影象特徵提取以及人臉影象匹配與識別。             人臉識別的第一步就是人臉的影象採集及檢測。         人臉檢測屬於目標檢測的

機器學習深度學習領域參考書 《TensorFlow技術解析實戰》PDF下載

《TensorFlow技術解析與實戰》 機器學習深度學習領域參考書 包攬TensorFlow1.1的新特性 人臉識別 語音識別 影象和語音相結合等熱點一應俱全 李航 餘凱等人工智慧領域專家傾力推薦目錄第一篇 基礎篇下載地址:https://pan.baidu.com/s/1iKDExWOgCuvxyqsF1

TensorFlow技術解析實戰》學習筆記1

第1章 人工只能概述   機器是如何實現人類的智力呢?訓練,模型(引數)。深度學習+神經網路。   深度學習前身是Artificial Neural Network。Input Layer, Hidden Layout, Output Layer。   前向傳播(

elasticsearch技術解析實戰(一) 入門和索引

ilog reat date str last dice elastics replicas nod GET _cat/nodes GET _cat/health GET _cat/shards GET http://10.37.84.124:9200/secislan

Elasticsearch技術解析實戰 PDF (內含目錄)

setting 4.6 2.2.3 tps 重寫 約定 系統 檢測 概念 Elasticsearch技術解析與實戰 下載地址:https://pan.baidu.com/s/1q46lwAqzbUMs0qbKyBNBqg 關註微信公眾號獲取提取碼:   輸入:esj

Elasticsearch技術解析實戰-索引

htm bulk version 繼續 多文檔 filter case || 重建 1.索引管理 創建索引 PUT http://127.0.0.1:9200/secisland { "settings": { "number_of_shards": 5,

計算機理論基礎+常用DOS命令+JAVA語言發展特性+JDK安裝解除安裝+一個java程式的編寫執行+環境變數配置的意義及步驟

          ————作為一個沒有天賦的人,當初入門時可謂經歷許多磨難,釋出此文只為想入門學習java開發的人能更輕鬆的起步一 。計算機理論基礎:計算機,計算機硬體,計算機軟體,軟體開發,計算機語言,人機互動方式             常用快捷鍵,常用DOS命令   

Asp.Net Core 學習教程1、初始.Net CoreVS Code 一個web程式

1、.Net Core介紹     .NET Core是.NET Framework的新一代版本, 是微軟開發的第一個具有跨平臺(Windows、Macosx、Linux) 能力的應用程式開發框架,未來也將會支援FreeBSD與Alpine平臺,是微

Docker技術入門實戰 8章 使用Dockerfile建立映象

Dockerfile是一個文字格式的配置檔案,使用者可以使用Dockerfile來快速建立自定義映象。本章首先介紹Dockerfile典型的基本結構和它支援的眾多指令,並具體講解通過這些指令來編寫定製映象的Dockerfile,以及如何生成映象。最後介紹使用Dockerfil

Java並發編程高階技術 高性能並發框架源碼解析實戰 高清無密

單線程 內存分析 wait -a 服務 並行 文章 計算框架 ... 第1章 課程介紹(Java並發編程進階課程) 什麽是Disruptor?它一個高性能的異步處理框架,號稱“單線程每秒可處理600W個訂單”的神器,本課程目標:徹底精通一個如此優秀的開源框架,面試秒殺面試官

Java併發程式設計高階技術-高效能併發框架原始碼解析實戰(資源同步)

第1章 課程介紹(Java併發程式設計進階課程) 什麼是Disruptor?它一個高效能的非同步處理框架,號稱“單執行緒每秒可處理600W個訂單”的神器,本課程目標:徹底精通一個如此優秀的開源框架,面試秒殺面試官。本章會帶領小夥伴們先了解課程大綱與重點,然後模擬千萬,億級資料進行壓力測試。讓大

Java併發程式設計高階技術-高效能併發框架原始碼解析實戰(無密連結)

第1章 課程介紹(Java併發程式設計進階課程) 什麼是Disruptor?它一個高效能的非同步處理框架,號稱“單執行緒每秒可處理600W個訂單”的神器,本課程目標:徹底精通一個如此優秀的開源框架,面試秒殺面試官。本章會帶領小夥伴們先了解課程大綱與重點,然後模擬千萬,億級資料進行壓力測試。讓大