From b6f585736f3684bd6183daee765af2d3e8d52a7a Mon Sep 17 00:00:00 2001 From: lidapeng Date: Sun, 8 Mar 2020 08:25:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AE=80=E6=98=93API?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ApiDocument.txt | 38 -------------------------------------- README.md | 42 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 40 deletions(-) delete mode 100644 ApiDocument.txt diff --git a/ApiDocument.txt b/ApiDocument.txt deleted file mode 100644 index b58cef2..0000000 --- a/ApiDocument.txt +++ /dev/null @@ -1,38 +0,0 @@ -//MyBrain-JAVA 神经网络api说明文档 -//构建一个神经网络管理器,参数:(感知神经元个数,隐层神经元个数,输出神经元个数,隐层神经元深度) -//一个神经网络管理管理一个神经网络学习内容,所以当初始化一个神经网络管理器,请将它置于静态对象 -NerveManager nerveManager = -new NerveManager(int sensoryNerveNub,int hiddenNerverNub,int outNerveNub,int hiddenDepth); -//开始构建神经网络,参数(各神经元是否进行权重及阈值的初始化),若不进行初始化,则用户需将之前保存的训练数据加载进神经元 -nerveManager.init(boolean initPower); -//设置学习率(取值范围是0-1开区间),若不设置默认为0.1 -nerveManager.setStudyPoint(0.2); -//添加判断回调输出类,参数:创建一个类 这将这类实现OutBack接口和其类方法,检测状态下的输出神经元,会将输出结果回调到这个类 -//若神经网络是学习状态,可不设置。检测状态若不设置会报错 -nerveManager.setOutBack(new Test()); -//获取感知神经元集合 -List sensoryNerves = nerveManager.getSensoryNerves(); -//从集合里拿出一个感知神经元进行输入,参数:事件ID,输入参数,是否是学习状态,对应输出神经元ID与期望结果的映射 -sensoryNerves.get(i).postMessage(long eventId, double parameter, boolean isStudy, Map E); -//实现OutBack 接口的类 回调 getBack() 参数:该输出神经元输出值,该神经元ID,该事件ID -public void getBack(double out, int id, long eventId) { - System.out.println("out==" + out + ",id==" + id + ",eventId==" + eventId); - } -神经管理器说明 -private List sensoryNerves = new ArrayList<>();//感知神经元 -private List> depthNerves = new ArrayList<>();//隐层神经元 -private List outNevers = new ArrayList<>();//输出神经元 -学习结束通过GET方法 获取三类神经元 集合并通过Nerve类 的 -public Map getDendrites() {//各参数权重 - return dendrites; - } - public double getThreshold() {//该神经元阈值 - return threshold; - } -获取这两个参数 并保存数据库,等下次服务启动 将对应数据在通过其SET方法 加载进对应神经元,此为上次学习结果 -参数说明: -eventId:事件ID,进行一次神经网络判断,为一次事件ID,ID唯一,可通过IdCreator.get().nextId 生成 -其目的就是 回调的时候 通过这个ID 判断 输出的结果是对应哪一个检测及输入事件 -parameter:就是输入参数 -isStudy:是否是学习状态,判断状态传FALSE,模板学习传TRUE,注意:学习状态输出神经元不输出结果 -E:期望结果,检测状态随便写值没有影响,学习状态是,该模板期望的结果,通常为0或者1,即分类值 \ No newline at end of file diff --git a/README.md b/README.md index 53eb57b..b545d57 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ * 功能还在扩展: 本包现在的功能还在逐步扩展中 * 说明文档有不清楚的地方可联系作者询问,QQ:794757862,或者查看视频教程,上有链接 -## 图像部分API 说明: +## 图像部分最简API 说明: public static void testPic() throws Exception { //测试SPEED模式学习过程 //初始化图像转矩阵类:作用就是说将一个图片文件转化为矩阵类 @@ -203,7 +203,7 @@ 回调第一个参数是输出值 指的是 这个分类的概率 该数值是0-1之间的浮点 第二个参数是 分类的id 判断是训练的哪个分类的ID, 第三个参数是 事件ID,一次判断事件 使用一个ID,让开发者知道是哪次事件的回调判断 -## 自然语言分类API 说明: +## 自然语言分类最简API 说明: public static void test() throws Exception { //自然语言分类说明 //创建模板读取累 TemplateReader templateReader = new TemplateReader(); @@ -222,6 +222,44 @@ //这里做一个特别说明,语义分类的分类id不要使用"0",本框架约定如果类别返回数字0,则意味不能理解该语义,即分类失败 //通常原因是模板量不足,或者用户说的话的语义,不在你的语义分类训练范围内 } +## 神经网络最简API说明 + //创建一个DNN神经网络管理器 + NerveManager nerveManager = new NerveManager(...); + //构造参数 + //sensoryNerveNub 感知神经元数量 即输入特征数量 + //hiddenNerverNub 每一层隐层神经元的数量 + //outNerveNub 输出神经元数量 即分类的类别 + //hiddenDepth 隐层神经元深度,即学习深度 + //activeFunction 激活函数 + //isDynamic 是否启用动态神经元数量(没有特殊需求建议为静态,动态需要专业知识) + public NerveManager(int sensoryNerveNub, int hiddenNerverNub, int outNerveNub, int hiddenDepth, ActiveFunction activeFunction, boolean isDynamic) + nerveManager.getSensoryNerves()获取感知神经元集合 + //eventId:事件ID + //parameter:输入特征值 + //isStudy:是否是学习 + //E:特征标注 + //OutBack 回调类 + SensoryNerv.postMessage(long eventId, double parameter, boolean isStudy, Map E, OutBack outBack) + //每一次输出结果都会返回给回调类,通过回调类拿取输出结果,并通过eventId来对应事件 +## 随机森林最简API说明 + //创建一个内存中的数据表 + DataTable dataTable = new DataTable(column); + //构造参数是列名集合 + public DataTable(Set key) + //指定主列名集合中该表的主键 + dataTable.setKey("point"); + //创建一片随机森林 + RandomForest randomForest = new RandomForest(7); + //构造参数为森林里的树木数量 + public RandomForest(int treeNub) + //唤醒随机森林里的树木 + randomForest.init(dataTable); + //将加入数据的实体类一条条插入森林中 + randomForest.insert(Object object); + //森林进行学习 + randomForest.study(); + //插入特征数据,森林对该数据的最终分类结果进行判断 + randomForest.forest(Object objcet); #### 最终说明 * TempleConfig():配置模版类,一定要静态在内存中长期持有,检测的时候不要每次都NEW, 一直就使用一个配置类就可以了。