0
雷鋒網(wǎng) AI科技評論消息,Keras R語言接口正式發(fā)布,并同時公開20個完整示例。
關(guān)于keras的介紹
Keras是一個高層神經(jīng)網(wǎng)絡(luò)API,為支持快速實驗而生,目前主要功能如下:
支持相同的代碼無縫跑在CPU或GPU上
對用戶友好,易于快速prototype深度學習模型
支持計算機視覺中的卷積網(wǎng)絡(luò)、序列處理中的循環(huán)網(wǎng)絡(luò),也支持兩種網(wǎng)絡(luò)的任意組合
支持任意網(wǎng)絡(luò)架構(gòu):多段輸入或多段輸出模型、層共享、模型共享等。這意味著Keras 本質(zhì)上適合用于構(gòu)建任意深度學習模型(從記憶網(wǎng)絡(luò)到神經(jīng)圖靈機)
兼容多種運行后端,例如TensorFlow、CNTK和 Theano
如果你已經(jīng)很熟悉Keras了,并且想要立刻體驗最新發(fā)布的R語言接口,請點擊如下網(wǎng)址:https://keras.rstudio.com,這里有超過20個完整示例,相信有你需要的東西。
接下來是更多關(guān)于Keras的信息,以及發(fā)布Keras的R語言接口的意義。
Keras和深度學習
在過去的幾年間,人們對深度學習的興趣增長迅速,同時期出現(xiàn)了幾個深度學習的框架。在所有的框架中,Keras因為在生產(chǎn)力、靈活性以及對用戶友好性方面的優(yōu)勢脫穎而出。同時期,tensorflow作為下一代機器學習平臺,非常靈活,很適合產(chǎn)品部署。
毫不驚訝地說,Keras和tensorflow正在逐漸超過其他深度學習框架。
現(xiàn)在,你不需要糾結(jié)該選tensorflow或是Keras了。Keras的默認后端支持通過tensorflow工作流,實現(xiàn)tensorflow和Keras的無縫集成。今年晚些時候,可以通過更深的集成,讓Keras完全實現(xiàn)與tensorflow的無縫銜接。
Keras和tensorflow目前都是最頂尖的深度學習框架,有了新發(fā)布的Keras包,利用R接口現(xiàn)在可以同時接入兩個框架。
使用說明
安裝
首先,從CRAN的Keras R包中按照如下步驟安裝:
install.packages("keras")
Keras R接口默認使用 TensorFlow后端引擎。使用如下install_keras()函數(shù)安裝核心Keras庫和 TensorFlow后端:
library(keras)
install_keras()()
這個函數(shù)默認基于CPU安裝Keras和TensorFlow。如果你想要自定義安裝,比如說想要利用英偉達GPU,可以查看install_keras()函數(shù)的詳細文檔。
MNIST樣例
可以通過實現(xiàn)一個簡單的例子來學習Keras的基本知識:識別來自MNIST數(shù)據(jù)集的手寫數(shù)字。MNIST由手寫數(shù)字的28x 28灰度圖像組成,如下圖所示:
數(shù)據(jù)集中包含每個圖像的標簽,來告訴我們這是哪個數(shù)字。例如,上面圖像中的標簽分別是5,0,4,1。
準備數(shù)據(jù)
MNIST數(shù)據(jù)集包含在Keras中,可以通過使用dataset_mnist() 函數(shù)得到。這個例子中我們先下載數(shù)據(jù)集,然后為測試和訓練數(shù)據(jù)創(chuàng)造出變量。
library(keras)
mnist <- dataset_mnist()
x_train <- mnist$train$x
y_train <- mnist$train$y
x_test <- mnist$test$x
y_test <- mnist$test$y
x數(shù)據(jù)是灰度值的3-d數(shù)組(圖像、寬度、高度)。為了準備訓練數(shù)據(jù),通過將寬度和高度轉(zhuǎn)換為一維(28x28的圖像被簡化成長為784的向量),從而把三維數(shù)組轉(zhuǎn)換為矩陣。然后,我們將值為0到255的整數(shù)之間的灰度值轉(zhuǎn)換成0到1之間的浮點值。
# reshape
dim(x_train) <- c(nrow(x_train), 784)
dim(x_test) <- c(nrow(x_test), 784)
# rescale
x_train <- x_train / 255
x_test <- x_test / 255
y數(shù)據(jù)是一個整型向量,其值從0到9。為了準備訓練數(shù)據(jù),我們利用 Keras to_categorical()函數(shù),用one-hot編碼方法將向量轉(zhuǎn)化為二進制類矩陣(binary class matrices ):
y_train <- to_categorical(y_train, 10)
y_test <- to_categorical(y_test, 10)
定義模型
我們首先創(chuàng)建一個序貫模型(sequential model),然后使用pipe(%-%)運算符添加層。
model <- keras_model_sequential()
model %>%layer_dense(units = 256, activation = 'relu', input_shape = c(784)) %>%
layer_dropout(rate = 0.4) %>%
layer_dense(units = 128, activation = 'relu') %>%
layer_dropout(rate = 0.3) %>%
layer_dense(units = 10, activation = 'softmax')
使用summary()函數(shù)打印出模型的細節(jié):
接下來,用適當?shù)膿p失函數(shù)、優(yōu)化器和指標來編譯模型:
model %>% compile(
loss = 'categorical_crossentropy',
optimizer = optimizer_rmsprop(),
metrics = c('accuracy')
)
訓練和評估
使用fit() 函數(shù)來訓練模型,epochs為30,batch_size為128:
history <- model %>% fit(
x_train, y_train,
epochs = 30, batch_size = 128,
validation_split = 0.2)
可以通過plot(history)繪制出每一步epoch下loss和acc的值:
通過測試數(shù)據(jù)評估模型表現(xiàn):
model %>% evaluate(x_test, y_test)
$loss
[1] 0.1149
$acc
[1] 0.9807
通過新的數(shù)據(jù)生成預測值:
model %>% predict_classes(x_test)
更多詳細信息,可以點擊:https://keras.rstudio.com/
keras包下載地址:https://cran.r-project.org/package=keras
雷鋒網(wǎng) AI科技評論編譯。雷鋒網(wǎng)原創(chuàng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。