Posts

Python in LeetCode

Something you need to know about using Python in algorithms

LC4: Median of Two Sorted Arrays

Solution of LeetCode 4: Median of Two Sorted Arrays

CF Edu Round 37

Solution of Codeforces Edu Round 37

Magic Exclusive OR

An introduction to XOR in CS

Protocol Oriented Programming

Swift Is a Protocol-Oriented Programming Language

Core ML

其实在早在iOS 11之前,Apple就用上了Machine Learning:照片的人脸识别、输入预测,甚至Apple Watch上的手写识别。但现在,开发者终于能在自己的App上使用ML了。 如果之前有大数据计算的iOS开发者可能知道,Apple提供的只有底层的基于CPU实现的 Accelerate(插一句刚刚发现这个framework开始支持watchOS 4了)和GPU实现的MPS,各种C指针的函数,功能少还很难用。所以,支持四大平台iOS、macOS、tvOS和watchOS的Core ML终于补全了这方面的功能。 0 这可不是热狗 当然这并不意味着你可以在一颗小小的A10芯片上炼丹。总的来说,Core ML主要是通过训练好的模型来给出结果。它不需要你手写一个几百行的神经网络,也不需要你去考虑性能和节能,并且从WWDC上的Session来看,似乎表现还不错,至少它不只会像硅谷中的Jian Yang一样告诉你这是不是个热狗。 1 ML Frameworks 下面这张图简洁地展示了整个架构。 最底层的是Accelerate和MPS,这次Apple又把它们封装了一层Core ML,再上面是用于图像处理例如物体追踪、人脸检测的Vision和用于自然语言处理的NLP(Natural Language Processing)。这些可以一起使用,实时使用,并且不用担心用户隐私、流量消耗和服务器的负担,甚至它可以在没有网络的情况下保持工作。 2 Core ML的使用 作为一个2017年的机器学习框架,它当然包含:前馈神经网络(Feed Forward Neural Networks)、卷积神经网络(Convolutional Neural Networks)、循环神经网络(Recurrent Neural Networks)、支持向量机(Support Vector Machines)、广义线性模型(Generalized Linear Models)、组合树(Tree Ensembles)这些常用又有用的模型。 然后你就应该会问怎么用了,别急,当然简单无脑。 Apple预先提供了一些 models供你使用,当然你也可以自己训练以后把它转换成MLMODEL——Apple推出了开源的Core ML Tools,目前支持Caffe、Keras、XGBoost、Scikit Learn、turi、LIBSVM(扎心了,TensorFlow)。 有了MLMODEL之后就方便多了,你可以把它像文件一样导入到你的项目中, 也可以作为一个Bundle使用, 甚至都不用import。 let model = FlowerClassifier() if let prediction = try? model.prediction(image: image) { return prediction.flowerType } 几行代码就可以完成——就是把它当个类嘛😂 3 来个Workflow吧? 这里我们以Caffe为例,来展示一下整个工作流程。 先安装这个tools(我不得不吐槽它竟然不支持Python3) pip install coremltools 然后在Python里导出mlmodel