睡岗识别可以通过TensorFlowAI深度学习框架智能分析技术,睡岗识别识别出现场人员是否存在睡岗情况,及时发出预警,避免因操作人员的疏忽而导致的安全事故。TensorFlow 是一个开源的机器学习的框架,我们可以使用 TensorFlow 来快速地构建神经网络,同时快捷地进行网络的训练、评估与保存。也正是因为 TensorFlow 是一个开源的软件库,因此只要我们安装了 TensorFlow,我们就可以使用import 的方式来引入。
说到这里我们不得不说一下 TensorFlow 的优点,相比于其他的机器学习框架,Tensorflow 框架是最适用于工业部署的一个机器学习框架,换句话说,TensorFlow 非常适用于在生产环境中进行应用。下面我们来细数一下 TensorFlow 的优点。
整个项目开源;
文档非常全面而且包含中文教程,学习成本比较低;
其内部含有很多高阶神经网络API,我们可以用一个语句来生产一个网络;
使用其内部的TensorFlow Service可以实现快速上线部署;
得益于高阶API,使用TensorFlow进行神经网络开发非常迅速;
内部内置TesnorBoard工具,可以很好的进行可视化工作;
对移动设备的支持非常友好;
TensorFlow内部内置分布式训练工具,开源很方便地进行分布式训练。
在当前,TensorFlow 的最新稳定版本为 2.2 版本。由于 TensorFlow1.x 与 TensorFlow2.x 的差别较大,因此在我们的学习与使用当中,我们应当首先学习TensorFlow2.x 版本。相比于T ensorFlow1.x,TensorFlow2.x 最大的优点就是加入了 Keras,而TensorFLow 也是默认采用 Eager 模式来构建我们的模型,这对于一些初学者来说是巨大的福音,而这在TensorFlow1.x时代是没有办法实现的。依托于谷歌强大的影响与号召力,TenorFlow 的用户群体非常巨大,而且使用 TensorFlow 得到的训练结果非常优秀,对于机器学习的初学者来说,这确实是一件不可多得的珍宝。
Adapter接口定义了如下方法:
public abstract void registerDataSetObserver (DataSetObserver observer)
Adapter表示一个数据源,这个数据源是有可能发生变化的,比如增加了数据、删除了数据、修改了数据,当数据发生变化的时候,它要通知相应的AdapterView做出相应的改变。为了实现这个功能,Adapter使用了观察者模式,Adapter本身相当于被观察的对象,AdapterView相当于观察者,通过调用registerDataSetObserver方法,给Adapter注册观察者。
public abstract void unregisterDataSetObserver (DataSetObserver observer)
通过调用unregisterDataSetObserver方法,反注册观察者。
public abstract int getCount () 返回Adapter中数据的数量。
public abstract Object getItem (int position)
Adapter中的数据类似于数组,里面每一项就是对应一条数据,每条数据都有一个索引位置,即position,根据position可以获取Adapter中对应的数据项。
public abstract long getItemId (int position)
获取指定position数据项的id,通常情况下会将position作为id。在Adapter中,相对来说,position使用比id使用频率更高。
public abstract boolean hasStableIds ()
hasStableIds表示当数据源发生了变化的时候,原有数据项的id会不会发生变化,如果返回true表示Id不变,返回false表示可能会变化。Android所提供的Adapter的子类(包括直接子类和间接子类)的hasStableIds方法都返回false。
public abstract View getView (int position, View convertView, ViewGroup parent)
getView是Adapter中一个很重要的方法,该方法会根据数据项的索引为AdapterView创建对应的UI项。