随着人工智能技能的发展和国务院印发的
来源:津信变频器 发布于:2019-4-21 9:10:32 点击量:
2019/04/22 08/24/02 【丹佛斯变频器 www.dfsbp.com】
这些年随着HTML技术的普及,浏览器对PC和手机硬件的控制越来越好。2018年11月,权威咨询机构发布《2018年私有云市场各品牌竞争力分析》,华云数据跃入领导者象限,成为中国私有云厂商前三甲。绘图画布的尺寸为 300*300,这可能是两个手绘图像的大小,或者可以在上面绘制一个小图像。而前端在这三个方向种,最容易参与进去,同时也最容易做出成绩的地方就是在工程方面。
导入
将使用以 TENSORFLOW 作为后端、KERAS 作为前端的编程框架
IMPORT OS
IMPORT GLOB
IMPORT NUMPY AS NP
FROM TENSORFLOW.KERAS IMPORT LAYERS
FROM TENSORFLOW IMPORT KERAS
IMPORT TENSORFLOW AS TF
加载数据
首先下载数据集。
# RESHAPE AND NORMALIZE
X_TRAIN=
X_TRAIN.RESHAPE(X_TRAIN.SHAPE[0],IMAGE_SIZE, IMAGE_SIZE, 1).ASTYPE('FLOAT32')
X_TEST=
X_TEST.RESHAPE(X_TEST.SHAPE[0], IMAGE_SIZE,IMAGE_SIZE, 1).ASTYPE('FLOAT32')
X_TRAIN /=255.0
X_TEST /=255.0
# CONVERT CLASS VECTORS TO CLASS MATRICES
Y_TRAIN=KERAS.UTILS.TO_CATEGORICAL(Y_TRAIN,NUM_CLASSES)
Y_TEST=KERAS.UTILS.TO_CATEGORICAL(Y_TEST,NUM_CLASSES)
创建模型
创建一个简单的卷积神经网络,模型越简单、参数越少越好。随着人工智能技能的发展和国务院印发的《新一代人工智能发展规划》,人工智能越来越受到开发者们的关注,从而也导致了各种人工智能的库涌现出来,并且越来越完善强大。实际上,将把模型转换到浏览器上然后再运行,并希望模型能在预测任务中快速运行。
3) 重新训练现有模型
使用连接到浏览器的传感器数据或其他客户端数据重新训练ML模型。对于前三点偏重交互的领域,毋庸置疑用前端做起来驾轻就熟,而后面偏重计算的领域,前端是否合适做,或者说前端该怎么去做是有可以探讨的。无需安装任何额外的插件,可直接在浏览器上运行,使用谷歌COLAB来训练模型,并使用TENSORFLOW.JS将它部署到浏览器上。
阅读下面的教程()了解如何创建 NOTEBOOK 和开始进行 GPU 编程。
2) 运行现有模型
使用TENSORFLOW.JS模型转换器在浏览器中运行预训练好的TENSORFLOW模型。
华云数据“智汇华云”专栏将为您奉上“2019前端战略规划”系列文章,本期将为您讲解2019前端战略规划之人工智能AI。而在混合应用上,仍然也可以经受住考验,混合应用在手机上做个图表是轻轻松松的事(只需要获取数据,然后显示)。
不过,上图是完善版的物联网,代码自然是在GITHUB上啦:LAN。
MODEL.SAVE(‘KERAS.H5’)
为转换安装TENSORFLOW.JS:
!PIP INSTALL TENSORFLOW.JS
对模型进行转换:
!MKDIR MODEL
!TENSORFLOWJS_CONVERTER --INPUT_FORMAT KERAS KERAS.H5MODEL/
通过 ZIP 将模型进行压缩,以便将其下载到本地机器上:
!ZIP -R MODEL.ZIP MODEL
最后下载模型:
FROM GOOGLE.COLAB IMPORT FILES
FILES.DOWNLOAD('MODEL.ZIP')
加载模型
使用TENSORFLOW.JS:
预处理
从画布中获取图像数据:
//THE MINIMUM BOUDNING BOX AROUND THE CURRENT DRAWING
CONST MBB=GETMINBOX
//CACLUATE THE DPI OF THE CURRENT WINDOW
CONST DPI=WINDOW.DEVICEPIXELRATIO
//EXTRACT THE IMAGE DATA
CONST IMGDATA=
CANVAS.CONTEXTCONTAINER.GETIMAGEDATA(MBB.MIN.X * DPI, MBB.MIN.Y * DPI,(MBB.MAX.X - MBB.MIN.X) * DPI, (MBB.MAX.Y - MBB.MIN.Y) * DPI);
将画布当前的图像数据转化为一个张量,调整大小并进行归一化处理:
FUNCTION PREPROCESS(IMGDATA){
RETURNTF.TIDY(=>{
//CONVERT THE IMAGE DATA TO A TENSOR
LETTENSOR=TF.FROMPIXELS(IMGDATA, NUMCHANNELS=1)
//RESIZETO 28 X 28
CONSTRESIZED=TF.IMAGE.RESIZEBILINEAR(TENSOR, [28, 28]).TOFLOAT
//NORMALIZE THE IMAGE
CONSTOFFSET=TF.SCALAR(255.0);
CONSTNORMALIZED=TF.SCALAR(1.0).SUB(RESIZED.DIV(OFFSET));
//WE ADDA DIMENSION TO GET A BATCH SHAPE
CONSTBATCHED=NORMALIZED.EXPANDDIMS(0)
RETURNBATCHED
})
}
使用 MODEL.PREDICT 进行预测,这将返回一个规模为「伟肯变频器N, 100」的概率。TENSORFLOW.JS 不仅可以提供低级的机器学习构建模块,还可以提供高级的类似 KERAS 的 API 来构建神经网络。
CONST PRED=
MODEL.PREDICT(PREPROCESS(IMGDATA)).DATASYNC
提升准确率
模型接受的输入数据是规模为 [N, 28, 28, 1] 的张量。
优点:
1) 不用安装驱动器和软件,通过链接即可分享程序
2) 网页应用交互性更强
3) 有访问GPS,CAMERA,MICROPHONE,ACCELERATOR,GYROSCOPE等传感器的标准API(主要是指手机端)
4) 安全性,因为数据都是保存在客户端的
应用方式:
1) 在浏览器中开发ML
使用简单直观的API从头构建模型,然后使用低级别的JAVASCRIPT线性代数库或高层API进行训练。
图形识别:你画我猜
这里演示创建一个简单的工具来识别手绘图像,并且输出当前图像的名称。
TENSORFLOW.JS 可以为你提供高性能的、易于使用的机器学习构建模块,允许你在浏览器上训练模型,或以推断模式运行预训练的模型。
DEF LOAD_DATA(ROOT, VFOLD_RATIO=0.2,MAX_ITEMS_PER_CLASS=5000 ):
ALL_FILES=GLOB.GLOB(OS.PATH.JOIN(ROOT, '*.NPY'))
#INITIALIZEVARIABLES
X=NP.EMPTY([0, 784])
Y=NP.EMPTY([0])
CLASS_NAMES=
#LOAD ASUBSET OF THE DATA TO MEMORY
FOR IDX,FILE IN ENUMERATE(ALL_FILES):
DATA=NP.LOAD(FILE)
DATA=DATA[0: MAX_ITEMS_PER_CLASS, :]
LABELS=NP.FULL(DATA.SHAPE[0], IDX)
X=N变频器维修 P.CONCATENATE((X, DATA), AXIS=0)
Y=NP.APPEND(Y, LABELS)
CLASS_NAME, EXT=OS.PATH.SPLITEXT(OS.PATH.BASENAME(FILE))
CLASS_NAMES.APPEND(CLASS_NAME)
DATA=NONE
LABELS=NONE
#SEPARATEINTO TRAINING AND TESTING
PERMUTATION=NP.RANDOM.PERMUTATION(Y.SHAPE[0])
X=X[PERMUTATION, :]
Y=Y[PERMUTATION]
VFOLD_SIZE=INT(X.SHAPE[0]/100*(VFOLD_RATIO*100))
X_TEST=X[0:VFOLD_SIZE, :]
Y_TEST=Y[0:VFOLD_SIZE]
X_TRAIN=X[VFOLD_SIZE:X.SHAPE[0], :]
Y_TRAIN=Y[VFOLD_SIZE:Y.SHAPE[0]]
RETURNX_TRAIN, Y_TRAIN, X_TEST, Y_TEST, CLASS_NAMES
数据预处理
对数据进行预处理操作,为训练模型做准备。2019年3月,华云数据宣布对国际领先超融合软件厂商MAXTA, INC.全部资产完成了合法合规收购。
流程
使用KERAS框架在谷歌COLAB免费提供的GPU上训练模型,然后使用 TENSORFLOW.JS 直直接在浏览器上运行模型。
。
IMPORT URLLIB.REQUEST
DEF DOWNLOAD:
BASE=''
FOR C INCLASSES:
CLS_URL=C.REPLACE('_', '%20')
PATH=BASE+CLS_URL+'.NPY'
PRINT(PATH)
URLLIB.REQUEST.URLRETRIEVE(PATH, 'DATA/'+C+'.NPY')
加载图像(每个类型5000张), 其中的 20% 作为测试数据。该模型将使用规模为 [N, 28, 28, 1] 的批处理,并且输出规模为 [N, 100] 的概率。
这个卷积神经网络将在QUICKDRAW数据集
()上接受训台达变频器练。为了做到这一点,通过找到左上方和右下方的点来提取围绕图像的最小边界框。
谷歌推出的第一个基于TENSORFLOW的前端深度学习框架TENSORFLOW.JS 是一个开源的用于开发机器学习项目的 WEBGL-ACCELERATED JAVASCRIPT 库。
相信大家对数据可视化也不会陌生,很容易能联想到阿尔法狗,这些年明显的趋势也是人工智能,比如语音识别、图像识别、人脸识别、指纹识别等,以及现在外面在做的一些数据可视化的内容。
//RECORD THE CURRENT DRAWING COORDINATES
FUNCTION RECORDCOOR(EVENT){
//GET CURRENTMOUSE COORDINATE
VAR POINTER=CANVAS.GETPOINTER(EVENT.E);
VAR POSX=POINTER.X;
VAR POSY=POINTER.Y;
//RECORD THEPOINT IF WITHING THE CANVAS AND THE MOUSE IS PRESSED
IF(POSX >=0&& POSY >=0 && MOUSEPRESSED)
{
COORDS.PUSH(POINTER)
}
}
//GET THE BEST BOUNDING BOX BY FINDING THE TOP LEFTAND BOTTOM RIGHT CORNDERS
FUNCTION GETMINBOX{
VAR COORX=COORDS.MAP(FUNCTION(P) {RETURN P.X});
VAR COORY=COORDS.MAP(FUNCTION(P) {RETURN P.Y});
//FIND TOPLEFT CORNER
VARMIN_COORDS={
X :MATH.MIN.APPLY(NULL, COORX),
Y :MATH.MIN.APPLY(NULL, COORY)
}
//FIND RIGHTBOTTOM CORNER
VARMAX_COORDS={
X :MATH.MAX.APPLY(NULL, COORX),
Y :MATH.MAX.APPLY(NULL, COORY)
}
RETURN {
MI伟肯变频器N :MIN_COORDS,
MAX :MAX_COORDS
}
}
关于华云数据:
华云数据集团专注于为客户提供 “自主、安全、可控”的云计算服务,以帮助用户采用云计算提升IT能力,实现业务变革。最好只裁剪包含当前手绘图像的方框。
成立八年来,华云数据坚持自主研发,获得了512项知识产权,在私有云、混合云、公有云和超融合领域均通过了相关可信云认证,获得了软件能力成熟度模型集成CMMI5证书,是国家课题承接单位、中国十大云计算解决方案提供商。
下面的模型包含 3 个卷积层和 2 个全连接层:
# DEFINE MODEL
MODEL=KERAS.SEQUENTIAL
MODEL.ADD(LAYERS.CONVOLUTION2D(16, (3, 3),
PADDING='SAME',
INPUT_SHAPE=X_TRAIN.SHAPE[1:], ACTIVATION='RELU'))
MODEL.ADD(LAYERS.MAXPOOLING2D(POOL_SIZE=(2, 2)))
MODEL.ADD(LAYERS.CONVOLUTION2D(32, (3, 3),PADDING='SAME', ACTIVATION='RELU'))
MODEL.ADD(LAYERS.MAXPOOLING2D(POOL_SIZE=(2, 2)))
MODEL.ADD(LAYERS.CONVOLUTION2D(64, (3, 3),PADDING='SAME', ACTIVATION='RELU'))
MODEL.ADD(LAYERS.MAXPOOLING2D(POOL_SIZE=(2,2)))
MODEL.ADD(LAYERS.FLATTEN)
MODEL.ADD(LAYERS.DENSE(128, ACTIVATION='RELU'))
MODEL.ADD(LAYERS.DENSE(100, ACTIVATION='SOFTMAX'))
# TRAIN MODEL
ADAM=TF.TRAIN.ADAMOPTIMIZER
MODEL.COMPILE(LOSS='CATEGORICAL_CROSSENTROPY',
OPTIMIZER=ADAM,
METRICS=['TOP_K_CATEGORICAL_ACCURACY'])
PRINT(MODEL.SUMMARY)
拟合、验证及测试
对模型进行了 5 轮训练,将训练数据分成了 256 批输入模型,并且分离出 10% 作为验证集。华云数据主要面向企业级用户提供定制化私有云、混合云解决方案,同时还可以提供大数据服务、超融合产品、公有云、IDC转云等服务。
传统意义上PYTHON已经成为了最受欢迎的机器学习语言,近来,JAVASCRIPT也出现的很多优秀的框架,尽管JAVASCRPT和NODE.JS的的性能要比 PYTHON 和 JAVA 的性能差,但它们已经能够应对机器学习中的许多问题。2016年起,华云数据集团连续三年被评为中国独角兽企业; 2018年5月,进入 “中国大数据独角兽企业TOP20榜”, 2018年7月,荣膺“2018中国互联网百强企业”称号,2018年8月,入围“中国大数据企业50强”。
该数据集包含 345 个类别的大约 5 千万张手绘图像。在AI的项目中,很多时候需要获取麦克风和摄像头的权限,好实现“听”,“说”,“看”的功能,对于图片的处理,网上也已经有不少用CANVAS实现的例子。
DEMO地址:
CODE地址:
数据集
使用卷积神经网络(CNN)来识别不同类型的手绘图像。
能做什么
前端工程在人工智能的团队到底能做什么,体现怎么的价值?从实践看,要完成一个完整的人工智能项目,三种东西是不可或缺的:算法,数据和工程。
具体的大致可以分为五块内容:人机交互,数据可视化,产品WEB,计算,模型训练和算法执行。
TENSORFLOW
TENSORFLOW.JS是一个开源的基于硬件加速的JAVASCRIPT库,用于训练和部署机器学习模型。同时,WEB 编程语言也具有很强的易用性,即你只要搞定了 WEB 浏览器,那么运行 JAVASCRIPT 人工智能项目就不是问题。作为服务端来说,NODE.JS的能力已经是经过验证的。
在TENSORFLOW.JS上有一个教程:
下图为处理流程:
在COLAB上进行训练
谷歌 COLAB提供了免费的 GPU 处理能力。自2010年成立以来,华云数据不断深入了解企业用户需求和行业特性,是一家追求卓越的云计算服务提供商。
#FIT THE MODEL
MODEL.FIT(X=X_TRAIN, Y=Y_TRAIN,
VALIDATION_SPLIT=0.1,BATCH_SIZE=256, VERBOSE=2, EPOCHS=5)
#EVALUATE ON UNSEEN DATA
SCORE=
MODEL.EVALUATE(X_TEST, Y_TEST, VERBOSE=0)
PRINT('TEST ACCUARCY: {:0.2F}%'.FORMAT(SCORE[1] *100))
准备WEB格式的模型
在得到满意的模型准确率后,将模型保存下来,以便进行下一步的转换
20190422082402
>下一篇:随着全球大型核电站建设放缓