-
隐藏层大小:实验基础上选择
-
输入层很大:隐藏神经元的数量介于输入层与输出层之间,而且通常更接近输出层大小
-
输入层和输出层都很小:隐藏层时最大的
-
输入层小,输出层大:隐藏层更接近输入层大小
-
过拟合:隐含层中包含的伪信息过多
-
setLayerSizes:1:输入层大小。最后:输出层大小,所有中间元素:隐藏层大小
eg:[9,15,9]:9个输入节点,9个输出节点,15个节点的隐藏层
[9,15,15,9]:9个输入节点,9个输出节点,两个15个节点的隐藏层 -
配置激活函数、训练方法,训练中止标准:
-
对称sigmoid(cv2.m1.ANN_MLP_SIGMOID_SYM)
-
反向传播方法(cv2.m1.ANN_MLP_BACKPROP)
(反向传播:在输出层计算预测误差的算法,,通过之前的层回溯错误的来源,并更新权重以减小误差) -
训练人工神经网络:指定训练的输入(samples),对应正确的输出(responses),数据格式(layout)`
training_sample=np.array([[1.2,1.3,1.9,2.2,2.3,2.9,3.0,3.2,3.3]],np.float(32))
layout=cv2.m1.ROW_SAMPLE
training_responses=np.array([[0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0]],np.flost32)
data=cv2.m1.TraingData_create(
training_samples,layout,training_responses
)
ann.train(data)
预测的输出是一个元组,第一个值是类别,第二个值是包含每个类的概率的一个数组。
预测的类将具有最高的概率值。
训练多阶段人工神经网络分类器
在一定程度上,阶段越多,准确率越高但是阶段过高会导致过拟合。
1、导包
randint:生成伪随机整数
uniform:生成伪随机浮点数
import cv2
import numpy as np
from random import randint,uniform
2、创建 配置人工神经网络
3个输入层,50个隐藏层,4个输出层
animals_net=cv2.m1.ANN_MLP_create()
animals_net.setLayerSizes(np.array([3,50,4]))
animals_net.setActivationFunction(cv2.m1.ANN_MLP_SIGMOID_SYM,0.6,1.0<