# 独家 | 教你在R中使用Keras和TensorFlow构建深度学习模型

• 以TensorFlow为后端的Keras框架安装

• 在R中可以使用Keras来构建模型的不同类型

• 在R中使用MLP将MNIST手写数字进行归类

• 将MNIST结果与Python中同等代码结果进行比较

• 结语

install.packages("devtools")

devtools::install_github("rstudio/keras")

library(keras)

install_tensorflow()

install_tensorflow(gpu=TRUE)

1. 多层感知器(Multi-Layer Perceptrons)

2. 卷积神经网络(Convoluted Neural Networks)

3. 递归神经网络(Recurrent Neural Networks)

4. Skip-Gram模型

5. 使用预训练的模型（比如VGG16、RESNET等）

6. 微调预训练的模型

library(keras)

data<-dataset_mnist()

#separating train and test file

train_x<-data$train$x

train_y<-data$train$y

test_x<-data$test$x

test_y<-data$test$y

rm(data)

# converting a 2D array into a 1D array for feeding into the MLP and normalising the matrix

train_x <- array(train_x, dim = c(dim(train_x)[1], prod(dim(train_x)[-1]))) / 255

test_x <- array(test_x, dim = c(dim(test_x)[1], prod(dim(test_x)[-1]))) / 255

#converting the target variable to once hot encoded vectors using keras inbuilt function

train_y<-to_categorical(train_y,10)

test_y<-to_categorical(test_y,10)

#defining a keras sequential model

model <- keras_model_sequential()

#defining the model with 1 input layer[784 neurons], 1 hidden layer[784 neurons] with dropout rate 0.4 and 1 output layer[10 neurons]

#i.e number of digits from 0 to 9

model %>%

layer_dense(units = 784, input_shape = 784) %>%

layer_dropout(rate=0.4)%>%

layer_activation(activation = 'relu') %>%

layer_dense(units = 10) %>%

layer_activation(activation = 'softmax')

#compiling the defined model with metric = accuracy and optimiser as adam.

model %>% compile(

loss = 'categorical_crossentropy',

metrics = c('accuracy')

)

#fitting the model on the training dataset

model %>% fit(train_x, train_y, epochs = 100, batch_size = 128)

#Evaluating model on the cross validation dataset

loss_and_metrics <- model %>% evaluate(test_x, test_y, batch_size = 128)

#importing the required libraries for the MLP model

import keras

from keras.models import Sequential

import numpy as np

from keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

#reshaping the x_train, y_train, x_test and y_test to conform to MLP input and output dimensions

x_train=np.reshape(x_train,(x_train.shape[0],-1))/255

x_test=np.reshape(x_test,(x_test.shape[0],-1))/255

import pandas as pd

y_train=pd.get_dummies(y_train)

y_test=pd.get_dummies(y_test)

#performing one-hot encoding on target variables for train and test

y_train=np.array(y_train)

y_test=np.array(y_test)

#defining model with one input layer[784 neurons], 1 hidden layer[784 neurons] with dropout rate 0.4 and 1 output layer [10 #neurons]

model=Sequential()

from keras.layers import Dense

keras.layers.core.Dropout(rate=0.4)

# compiling model using adam optimiser and accuracy as metric

# fitting model and performing validation

model.fit(x_train,y_train,epochs=50,batch_size=128,validation_data=(x_test,y_test))

|
13天前
|

【8月更文挑战第27天】本文将深入浅出地探讨深度学习，特别是神经网络的构建和实际应用。我们将通过一个实际案例，了解如何从零开始搭建一个深度学习模型，并利用它解决实际问题。无论你是初学者还是有一定基础的开发者，这篇文章都将为你打开深度学习的大门，让你领略其无限可能。
29 1
|
9天前
|

JSF 邂逅持续集成，紧跟技术热点潮流，开启高效开发之旅，引发开发者强烈情感共鸣
29 0
|
9天前
|

【8月更文挑战第31天】在 JavaServer Faces（JSF）应用开发中，确保代码质量和可维护性至关重要。本文详细介绍了如何通过单元测试实现这一目标。首先，阐述了单元测试的重要性及其对应用稳定性的影响；其次，提出了提高 JSF 应用可测试性的设计建议，如避免直接访问外部资源和使用依赖注入；最后，通过一个具体的 UserBean 示例，展示了如何利用 JUnit 和 Mockito 框架编写有效的单元测试。通过这些方法，不仅能够确保代码质量，还能提高开发效率和降低维护成本。
21 0
|
9天前
|
UED 开发者

【8月更文挑战第31天】在开发过程中，数据绑定是连接数据模型与用户界面的关键环节，可实现数据自动更新。Uno Platform 提供了简洁高效的数据绑定方式，使属性变化时 UI 自动同步更新。通过示例展示了基本绑定方法及使用 Converter 转换数据的高级技巧，如将年龄转换为格式化字符串。此外，还可利用 BindingMode.OneTime 提升性能。掌握这些技巧能显著提高开发效率并优化用户体验。
28 0
|
9天前
|

【8月更文挑战第31天】 本文是一篇面向初学者的深度学习指南，旨在通过简洁明了的语言引导读者了解并实现他们的第一个神经网络。我们将一起探索深度学习的基本概念，并逐步构建一个能够识别手写数字的简单模型。文章将展示如何使用Python语言和TensorFlow框架来训练我们的网络，并通过直观的例子使抽象的概念具体化。无论你是编程新手还是深度学习领域的新兵，这篇文章都将成为你探索这个激动人心领域的垫脚石。
19 0
|
11天前
|

【8月更文第29天】随着数据量和模型复杂度的增加，单个GPU或CPU已无法满足大规模深度学习模型的训练需求。分布式计算提供了一种解决方案，能够有效地利用多台机器上的多个GPU进行并行训练，显著加快训练速度。本文将探讨如何使用PyTorch框架实现深度学习模型的分布式训练，并通过一个具体的示例展示整个过程。
26 0
|
11天前
|

【8月更文第29天】深度学习是机器学习的一个分支，它利用多层非线性处理单元（即神经网络）来解决复杂的模式识别问题。PyTorch 是一个强大的深度学习框架，它提供了灵活的 API 和动态计算图，非常适合初学者和研究者使用。
25 0
|
12天前
|

【8月更文挑战第28天】本文旨在揭开深度学习的神秘面纱，通过浅显易懂的语言和直观的代码示例，引导读者理解并实践神经网络的构建与训练。我们将从基础概念出发，逐步深入到模型的实际应用，让初学者也能轻松掌握深度学习的核心技能。
21 0
|
3月前
|

TensorFlow与Keras实战：构建深度学习模型

240 59
|
3月前
|

155 7