Python Opencv的神经网络的激活函数能自己设置吗?

发布于 2022-09-04 15:37:50 字数 861 浏览 22 评论 0

试这用opencv的神经网络对iris做一个分类,得到输出结果的数值是介于-1到1之间的数字。
这是不是说明opencv默认的使用的激活函数是双曲正切函数?
我怎么样才能把opencv的神经网络的激活函数设置成为sigmoid函数呢?这个网络的有四个输入层,三个隐藏层,三个输出层

这是我写的代码:

#-*- coding: utf-8 -*-
import cv2
import numpy as np 
tmp = np.loadtxt("iris.csv", dtype=np.str, delimiter=",")
data = tmp[1:-1, 1:5]
data = data.astype(np.float32)
label = tmp[1:-1, 5]
Y = np.zeros([label.shape[0], 3])
Y[label=='"setosa"'] = np.array([1, 0, 0])
Y[label=='"versicolor"'] = np.array([0, 1, 0])
Y[label=='"virginica"'] = np.array([0, 0, 1])
layerSize = np.int32([4, 3, 3])
ann = cv2.ANN_MLP()
ann.create(layerSize)
ann.train(data, Y, None, None)
print data.shape, Y.shape
a = ann.predict(data)
print a

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彼岸花似海 2022-09-11 15:37:50

set

enum ActivationFunctions { 
  IDENTITY = 0, 
  SIGMOID_SYM = 1, 
  GAUSSIAN = 2 
}

C++接口就是这样

Python接口应该也差不多

ann.setActivationFunction(1)

或者

ann.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM)

应该就用上了

我的opencv版本和你貌似不太一样,我用如下代码:

ann = cv2.ml.ANN_MLP_create()
ann.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM)

测试,可以运行

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文