Google 開發者大會 (Google Developer Days,簡稱 GDD) 是展示 Google 最新開發者產品和平臺的全球盛會,旨在幫助你快速開發優質應用,發展和留住活躍使用者群,充分利用各種工具獲得更多收益。2018 Google 開發者大會於 9 月 20 日和 21 日於上海舉辦。?Google 開發者大會 2018 掘金專題
2018 年 9 月 20 日 Laurence Moroney(Google 開發者技術推廣工程師)與付弋真(Google Brain 的軟體工程師)帶來一場《TensorFlow 簡介:機器學習技術使用入門》的演講,本文將對演講做一個回顧。
機器學習與傳統程式設計
TensorFlow 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),伺服器,移動裝置等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智慧研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網路方面的研究,但這個系統的通用性使其也可廣泛用於其他計算領域。
Laurence Moroney講述了他所經歷的變革:
- 網頁的變革從程式設計師的角度上來說,網頁改變了人們所有的一切。通過網頁,程式設計師們可以寫出讓上億的使用者接觸到的程式。這場變革帶了新的商業模式,比如谷歌、百度、淘寶等等。
- 智慧手機也帶來了一場變革,同樣也帶來了像滴滴和 Uber 這樣的商業體驗。
- 我們正在面臨下個變革,也就是機器學習的變革。
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/968e052ce0fbba539ab35032e3c62a4714f69f1b85e631283c9f92fbc3a59252.png)
運動檢測APP場景
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/e30dfd69beb245430aadcfbdce6a536849efd5a709c36e47a3a741f4225a2a39.png)
在藉助手機速度感測器的幫助下,我們可以獲取當前使用者的速度,然後再使用程式碼進行判斷。
- speed < 4 定義為步行,
- 4 <= speed < 12 定義為跑,
- speed > 12 定義為騎車。
一些簡單的運動場景可以通過上述型別的方式進行檢測,倘若像使用者在打高爾夫這種複雜的運動場景是無法被檢測出來,而機器學習可以幫我們解決在這個問題。
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/4e255cd0918877773934043d9a84956ec083ce66b4a20d15058cbc6c178468c5.png)
機器學習需要程式設計師提供答案和資料,給答案打上標籤,在資料的配合之下,機器會自己研究出規則。
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/f6957f82e8a1d2a49e6db7c7c4e4afc9bc15ac302f082903f9b9a5c8d70ed85c.png)
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/78b1f9d83d4cae73bb99ce0af10e2fe605e6ca501762e6e93fa6824a84c971bc.png)
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/c43c6b427f23482b9300ed783723ba4fbb3894ae32e7a44448c78b7fd20e4336.png)
機器學習就是在模仿人類,通過大量的資料和標籤,得到規則,從而解決問題。讓機器像人一樣學習,這是機器學習所要走的第一步。
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/447ed4c319cc2c265ec2bd76441d12695bb5fd6cd6babe5111a05fec6f49bfec.png)
程式碼實踐( 付弋真主講 )
數字之間關係
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/1039b18b6ebe671233d9c62bd2c6277fd0c5fdb2d471c9f5baa298e6a7277312.png)
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/434aca4b272ac0a2630392cf7b5a5061e5fa0b88d77248c50311cc450893bbc6.png)
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/acf8a6e19475fc9c819e6667341d127f495247e5e94f9b69ad2e2f22f004150e.png)
from tensorflow import keras
import numpy as np
model = keras.Sequential([keras.layers.Dense(units = 1, input_shape = [1])])
model.compile(optimizer = 'sgd', loss = 'mean_squared_error')
xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype = float)
ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype = float)
model.fit(xs, ys, epochs = 500)
print(model.predict([10.0]))
複製程式碼
結果如下:
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/4293855caa5157b74f71d54f3c327f61ca7eb00613aa817fca12ac04493749c2.png)
識別不同的衣服
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/4070daed2433465d952e41cb476a26ff398e6cdbda5c777aa5de4efa97ad54cd.png)
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/da91e49d487503154f45618d761e08c04c9a86f9b93f4cd8a059358911638a81.png)
Fashion-MNIST是一個替代MNIST手寫數字集的影象資料集。 它是由Zalando(一家德國的時尚科技公司)旗下的研究部門提供。其涵蓋了來自10種類別的共7萬個不同商品的正面圖片。Fashion-MNIST的大小、格式和訓練集/測試集劃分與原始的MNIST完全一致。60000/10000的訓練測試資料劃分,28x28的灰度圖片。
通過 Fashion-MNIST 資料集,可以對我們的模型進行訓練,不斷地優化,從而提高識別準確率。
import tensorflow as tf
from tensorflow import keras
import numpy as np
# Import the Data
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, teat_labels) = fashion_mnist.load_data()
# Normalize the data
train_images = train_images / 255.0
test_images = test_images / 255.0
#Define the model
model = keras.Sequential([
keras.layers.Flatten(inport_shape = (28,28)),
keras.layers.Dense(128, activation = tf.nn.relu),
keras.layers.Dense(10, activation = tf.nn.softmax),
])
model.compile(oprimizer = tf.train.AdadeltaOptimizer(),loss = 'sparse_categorical_crossentropy',metrics=['accuracy'])
#Train the model
model.fit(train_images, train_labels, epochs = 5, verbose = 2)
predictions = model.predict(test_images)
print(test_images[4560])
print(np.argmax(predictions[4560]))
複製程式碼
執行結果如下:
![TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018](https://i.iter01.com/images/30847dfa725f4068d9dceedd042dc60e5d0d6b68f8e7d3d81de170e42f879045.png)
在設定5次迭代的前提下,本模型的成功率為 71% 。神經網路可以通過更多的訓練,從而提高準確率。
以上就是本次演講的全部內容,希望對大家有所幫助。
閱讀更多 Google 開發者大會 2018 技術乾貨