问题标签 [fann]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4423 浏览

c++ - 在 Visual Studio 中的托管代码和非托管代码之间切换

共有三个项目:

  • 项目 A(我的项目,WPF .NET 4.5)
  • 项目 B(带 CLR 的托管 C++(FANN 库的 .NET 包装器))
  • 项目 C(用 C 制作的非托管项目,(FANN 库))

在打开项目 A 的 Visual Studio 2012 中,我无法通过项目 B 进入项目 C。

项目 B 和 C 是免费和开源的,我已经成功构建了它们。

项目 A 引用了项目 B 的 DLL,如果找不到项目 C 的 DLL 文件,项目 A 将无法运行 - 所以我已将项目 C 的 DLL 复制并粘贴到项目中,并将“始终复制”设置为输出目录。

在调试过程中进入时,我只能访问项目 B 的源代码。我什至没有看到模块窗口中加载了我完全不理解的项目 C。如果没有包含项目 C 的 DLL,该项目将无法运行,并且当它被包含时,它不会加载,但所有调用都在工作,因此必须在某处加载它。

我试图将项目 C 的 PDB 文件包含到项目 A 的输出目录中,但没有成功,从项目 B 到项目 C 的函数调用仍然会被跳过并且永远不会进入。

注意:

  • 仅我的代码已禁用
  • 项目 C 以两种方式包含在项目 B 中 - 一个“lib”文件(在链接器设置中)和它在源代码中的“.h”文件被引用......我不知道这是否是问题,但是你可能会。

我知道必须有办法实现这一点,我拥有所有可用的源代码,但我不是 C 或 C++ 代码方面的专家,也不是调试它的专家。我尝试将所有各种项目 C 的文件从 bin 目录包含到项目 A 中,但无法使其正常工作。

感谢您的任何帮助或建议!

0 投票
1 回答
557 浏览

neural-network - FANN:保存/加载经过训练的 ann 更改 MSE?

这样的问题:我已经使用 MSE 停止功能训练了一些 ann,直到“期望错误”10^-5(5MB 的训练数据,15000 个输入项,训练周期长——大约一天)。我在训练期间有 0 位失败。我已将 ann 保存到文件中。

然后我从文件中加载网络,并在相同的训练数据上进行检查。有时我会失败到 5 次(不那么罕见,顺便说一句!)。

这是什么?有人遇到这种现象吗?

我怀疑,这是四舍五入的产物:成千上万的权重以文本格式保存到文件中并加载回......

0 投票
2 回答
3153 浏览

python - FANN Python 绑定失败

我刚刚构建并安装了libfann和相关的 python 绑定。python 设置似乎运行正常:

但随后导入失败:

有谁知道如何解决这个问题?

0 投票
7 回答
65124 浏览

c# - 如何添加外部原生依赖dll?

我有两个项目。第一个是 Windows 窗体应用程序项目,第二个是类库项目。Сlass 库项目与FANN一起使用。Windows 窗体是启动项目。

我应该有Fann.Net.dll 和 fanndoubleMT.dll 与 FANN一起工作。我下载了这些库并将它们放在位于解决方案根目录中的文件夹lib中。

我将 Fann.Net.dll 作为外部 dll 添加到类库项目中。我编译了这个项目。我收到一条错误消息,提示“无法加载 DLL 'fanndoubleMT.dll'。我通过将 fanndoubleMT.dll 添加到文件夹 Windows_Forms_Application\bin\Debug 来修复此错误。

我认为这是一个糟糕的解决问题的方法,因为我使用 git,并且每次都需要将 dll 传输到新工作场所上的这个文件夹中。

真诚的,丹尼斯。

0 投票
0 回答
644 浏览

visual-studio-2010 - 为人脸识别配置 ANN

在我提出问题之前,先简单介绍一下我的项目:

  1. 我正在使用 OPENCV 的内置功能来检测 cam-feed 中的人脸。
  2. 之后,我正在处理包含面部的图像,即将其转换为灰度,将其调整为 40X40 像素并均衡其直方图。
  3. 然后读取图像的像素值、标准化(即除以 256,因为 FANN 使用 0 和 1 或 -1 和 1 之间的值,取决于使用的函数)并保存到 1600 个元素的数组中。这是神经网络使用的数据。根据数据,ANN 决定这张脸是我的、未知的还是根本不是一张脸(误报)。
  4. 然后神经网络返回一个包含 3 个元素的数组,程序通过找到最大值来决定人脸属于哪个组。

问题是,除了很好地检测误报之外,我的代码给出的结果相当不准确。

我的ANN的一些细节。我正在使用 doublefann.h。该网络包含 1600 个输入神经元(显然),3 个输出神经元(甚至更多),而单个隐藏层包含 1600 个神经元,尽管我确实尝试了 800-2400 范围内的其他值。我正在使用我的 20 个面部样本、30 个未知面部样本和 30 个随机背景样本进行训练。我尝试了 RPROP(FANN 中的默认值,似乎大部分时间都过拟合)和 QUICKPROP(在训练时提供了很好的、平滑地减少的误差,但结果不准确)训练算法,以及 SIGMOID_SYMMETRIC(训练完成得非常快,但通常以 MSE 突然下降到接近零值而告终,并且由此产生的网络是过拟合的)激活函数。我使用 MSE 和位失败值作为停止的标准。可悲的是,

所以我的问题是,考虑到我的项目的性质和它处理的数据,什么是最佳的:

  1. 隐藏神经元的数量
  2. 激活功能
  3. 训练算法
  4. 每组的训练样本数(有人说 20-30 就足够了)
  5. 停止标准

当然,欢迎任何建议,它不需要回答所有或任何五个问题。我知道我的问题是一个相当复杂的问题,但是我花了很多时间在圈子里跑,厌倦了阅读有关该主题的文献,并且非常感谢一些第一手的知识。

0 投票
1 回答
998 浏览

c++ - C++ 构建库并链接它

我正在尝试编写一个使用 FANN 库的程序:http: //leenissen.dk/fann/wp/

我下载了源代码,打开了 .sln 项目并编译了它。现在:我必须做什么?我试图创建一个新的“控制台应用程序项目”,我包含了主标题

(我之前在我的项目文件夹中复制了 src 文件夹)

我继续:项目->属性->链接器->常规,我将“目录库”指向VS编译.lib的“bin”文件夹,但我仍然有错误“未解析的外部符号”(错误,当然,与我在代码中调用的一些函数有关)。我真的不知道该怎么做,这是我第一次尝试做类似的事情,我想我在这里遗漏了一些重要的东西......

0 投票
1 回答
1012 浏览

iphone - 如何在 Xcode 中安装和使用 FANN

我想在 Xcode 中使用 FANN(快速人工神经网络)我在谷歌上搜索了一种如何获取 FANN 并将其安装在 Xcode 中的方法,但我没有找到结果请大家知道我可以从哪里下载 FANN 库并使用它用 Xcode 谢谢

0 投票
1 回答
753 浏览

training-data - FANN 增量学习

我现在正在使用 FANN 进行增量学习。有人会告诉我我的程序是否错误吗?谢谢你。

我有一个要训练的数据集。但将来我会得到一些新的数据集。我想用新的数据集增量训练当前的 nn,称为“增量学习”。

我首先使用旧数据“old.data”创建和训练一个 nn。我还设置了训练算法。

结构 fann *ann = fann_create_standard(num_layers, num_input, num_neurons_hidden, num_output); fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC); fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_training_algorithm(ann, FANN_TRAIN_INCREMENTAL);
fann_train_on_file(ann,“old.data”,max_epochs,epochs_between_reports,desired_error);fann_save(ann, "mynn.net");
fann_destroy(ann);

然后当我有新的数据集“new.data”时,我想我可以这样编程:

struct fann *ann = fann_create_from_file("mynn.net");
fann_train_on_file(ann,“new.data”,max_epochs,epochs_between_reports,desired_error);

我的程序正确吗?

0 投票
1 回答
1333 浏览

c - 使用 FANN 的链接错误

我正在尝试使用 MinGW 在 Windows 上构建一个基本的 FANN(快速人工神经网络)项目。但是,每当我尝试链接可执行文件时,都会遇到一堆undefined reference to错误。有趣的是,如果我根本不链接库,我会收到更多错误,这意味着至少有一些库正在运行。我试图编译和链接的文件的代码是:

我用来编译和链接的命令是:

我回来的错误是:

如果我根本不链接库,我会得到:

编辑:

按照Haroogan的要求,我跑了nm fanndouble.lib。输出相当广泛,因此我没有将其全部粘贴在这里,而是通过 pastebin 在这里提供:http ://pastebin.com/raw.php?i=vybFhEcX

我不熟悉nm,但文件中似乎确实存在丢失的符号。

编辑#2:

doublefann.h 的内容为:http: //pastebin.com/mrHKJi8C

fann.h 的内容包括:http ://pastebin.com/gTrHCYAg

可以通过使用 MinGW 重新编译库来解决问题吗?

编辑#3:

做出 Haroogan 建议的改变是有效的!除了这些更改之外,我还必须通过添加以下内容来修改 FANN 的 CMakeLists.txt 文件:

然后,运行cmake -G "MinGW Makefiles",然后mingw32-make在项目的根目录中生成一个文件 libdoublefann.dll,当链接并包含在 .exe 的目录中时,最终允许我运行我的程序。

0 投票
1 回答
752 浏览

c - function in FANN to scale test data based on scale parameters setup at training

In FANN , after I import the training data I scale it accordingly the activation functions I am using . I use FANN_SIGMOID_SYMMETRIC so it should be -1.0 and 1.0.

The range of my training data is [-100,100]

After the network converges I want to run it with new input data. Since the my new data has range [-50,50] I should scale respecting the previous setup and I should call

Is there any function can I use so that I can avoid this check and scale my new data accordingly to the previous scale? Something that may be stored in the network itself?

Essentially without knowing which input and scales were used is it possible to scale new data by using some function?

I am still new to the library (incredibly fast) and I cannot sort this out.