前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[开发技巧]·安卓手机开发深度学习简易教程(基于Keras)

[开发技巧]·安卓手机开发深度学习简易教程(基于Keras)

作者头像
小宋是呢
发布2019-06-27 14:53:59
8590
发布2019-06-27 14:53:59
举报
文章被收录于专栏:深度应用深度应用

个人主页–> http://www.yansongsong.cn

本教程基于安卓手机平台,在PyDroid3软件上,使用Python3语言配合Keras框架开发深度学习。本文章主要涉及在手机上开发环境的搭建,以及简单的示例代码,如果想深入研究开发,还需要读者自己花些功夫了。不废话,开始教程。。

- 准备工作

1、手上需要有一个安卓手机,最近两年发布的机型都可以,性能不要太弱,因为跑深度学习代码还是很吃性能的。我用的是小米8,跑cnn长时间会发热。 2、下载PyDroid3手机APP,我给大家准备好链接了 PyDroid3下载地址 3、手机需要联网,并且至少应该有1G存储,因为要下载一些依赖包。

- 软件安装

1、安装下载好的PyDroid,为了方便演示,我从手机上卸载APP,把整个流程走一下。 2、安装好PyDroid后,打开APP,会自动安装Python3,稍等一下,就可以测试python是否正常工作。 3、测试python功能

在这里插入图片描述
在这里插入图片描述

在中间输入框输入测试代码:

代码语言:javascript
复制
print("Hello World")

注意括号()和双引号""要使用英文输入法下面标点符号来输入,不然会报错,以后再手机上Code的时候也要注意这点。 输入代码完成后,点击右下角的黄色按钮就可以运行,如果无误的话会有 Hello World 的输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

- 开发环境搭建

1、依赖库安装 点击右上角会显示更多菜单,选择Pip选项,可以在QUICK INSTALL找到常用的库,点击INSTALL就可以安装了,安装的时候要稍等一下(速度的确比较慢,大家需要耐心等待下),等提示安装完成时再退出界面。 首先可以先安装常用的包: numpy,pandas,cython,scipy。

在这里插入图片描述
在这里插入图片描述

2、keras环境安装 细心的同学可以发现其实在上面界面就可以安装Keras了,但是因为Keras需要Theano作为后端(就是需要Theano才能正常运行),所以我们需要先安装Theano,可以在INSTALL 下面输入框输入 theano 然后APP就会自己搜索下载(注意不要输入错了,可能会找不到包),同样的等一下,安装完成后再退出界面,如果 提示错误,可能是网络原因,那就等一下再输入一次进行安装。(建议有些基础的可以选择命令行,在软件上很容易找到,和Linux,系统用法基本一致)

在上面菜单选项选择Terminal 选项,进入Terminal 依次输入:完成一项再输入下一项

代码语言:javascript
复制
pip3 install --upgrade pip
代码语言:javascript
复制
pip3 install theano
代码语言:javascript
复制
pip3 install keras

安装完成后就可以测试keras功能了,开始深度学习了。

- 测试代码

代码语言:javascript
复制
# coding: utf-8
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation, Convolution2D, MaxPooling2D, Flatten
from keras.optimizers import Adam
np.random.seed(1337)
 
# download the mnist
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
 
# data pre-processing
X_train = X_train.reshape(-1, 1, 28, 28)/255
X_test = X_test.reshape(-1, 1, 28, 28)/255
Y_train = np_utils.to_categorical(Y_train, num_classes=10)
Y_test = np_utils.to_categorical(Y_test, num_classes=10)
 
# build CNN
model = Sequential()
 
# conv layer 1 output shape(32, 28, 28)
model.add(Convolution2D(filters=32,
                       kernel_size=5,
                       strides=1,
                       padding='same',
                       batch_input_shape=(None, 1, 28, 28),
                       data_format='channels_first'))
model.add(Activation('relu'))
 
# pooling layer1 (max pooling) output shape(32, 14, 14)
model.add(MaxPooling2D(pool_size=2, 
                       strides=2, 
                       padding='same', 
                       data_format='channels_first'))
 
# conv layer 2 output shape (64, 14, 14)
model.add(Convolution2D(64, 5, 
                        strides=1, 
                        padding='same', 
                        data_format='channels_first'))
model.add(Activation('relu'))
 
# pooling layer 2 (max pooling) output shape (64, 7, 7)
model.add(MaxPooling2D(2, 2, 'same', 
                       data_format='channels_first'))
 
# full connected layer 1 input shape (64*7*7=3136), output shape (1024)
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
 
# full connected layer 2 to shape (10) for 10 classes
model.add(Dense(10))
model.add(Activation('softmax'))
model.summary()
# define optimizer
adam = Adam(lr=1e-4)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])
 
# training
print ('Training')
model.fit(X_train, Y_train, epochs=1, batch_size=16)
 
# testing
print ('Testing')
loss, accuracy = model.evaluate(X_test, Y_test)
print ('loss, accuracy: ', (loss, accuracy))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Hope this helps Enjoy Yourself。。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • - 准备工作
  • - 软件安装
  • - 开发环境搭建
  • - 测试代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档