标签: fann

如何添加外部本机依赖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转移到新工作区的这个文件夹.

真诚的,丹尼斯.

c# dll fann

21
推荐指数
4
解决办法
4万
查看次数

位失败意味着什么?

我的神经网络有22个5184值的输入(两位数值,图像转换为字节),我试图用值设置2个输出神经元,0或者1像:

<input data line with 5184 values>
0 1
<input data line with 5184 values>
1 0
<input data line with 5184 values>
.
.
.
Run Code Online (Sandbox Code Playgroud)

从培训结果:

Epochs            1. Current error: 0.3750000000. Bit fail 33.
Run Code Online (Sandbox Code Playgroud)

这有点失败了?文件说:

失败位数; 表示输出神经元的数量不同于位失败限制.

如果只有2个输出神经元,我怎么能有33个输出神经元失败?我想这个33可以来自总共44个输出(22个输入中的每个输出2个).但文档并未证实这一点.

neural-network fann

14
推荐指数
1
解决办法
499
查看次数

FANN中位失败的目的是什么?

即时通讯从粉丝那里得到了如下的回应

    Epochs            1. Current error: 0.2500066161. Bit fail 4.
    Epochs           58. Current error: 0.0000930788. Bit fail 0.
Run Code Online (Sandbox Code Playgroud)

Bit失败意味着什么?

artificial-intelligence neural-network fann

10
推荐指数
2
解决办法
3899
查看次数

FANN错误11:无法分配内存

在FANN的Python实现中,我收到了这个错误

from pyfann import libfann
ann = libfann.neural_net()
ann.create_standard(4, 2, 8, 9, 1)
#FANN Error 11: Unable to allocate memory.
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

python neural-network fann

7
推荐指数
1
解决办法
1690
查看次数

如何在没有softmax输出的情况下进行不相交分类?

在FANN中进行'不相交'分类(其中输出是互斥的,即真实概率总和为1)的正确方法是什么,因为它似乎没有softmax输出的选项?

我的理解是使用sigmoid输出,就像做"标记"一样,我不会得到正确的分类问题结果.

neural-network fann

5
推荐指数
1
解决办法
380
查看次数

编译时出错"未定义引用`sin'"(使用-lm)

我已下载并编译:http://leenissen.dk/fann/wp/

  • cmake版本2.8.11.2
  • gcc(Ubuntu/Linaro 4.8.1-10ubuntu8)4.8.1

用于编译的命令:

cmake -D CMAKE_INSTALL_PREFIX:PATH=/usr .
Run Code Online (Sandbox Code Playgroud)

安装:

sudo make && sudo make install
Run Code Online (Sandbox Code Playgroud)

然后我转到fann项目中的examples /目录并尝试通过运行编译示例:

make all
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

gcc -O3 xor_train.c -o xor_train -lfann -lm
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `sin'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `exp'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `cos'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `log'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `pow'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `sqrt'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `floor'
collect2: error: ld returned 1 exit status
make: *** [xor_train] Error 1
Run Code Online (Sandbox Code Playgroud)

更新:

  • 我遵循了图书馆的指示 …

c gcc cmake linker-errors fann

4
推荐指数
1
解决办法
5551
查看次数

sse2浮点乘法

我试图将一些代码从FANN Lib(用C语言编写的神经网络)移植到SSE2.但是SSE2的性能比普通代码差.使用我的SSE2实现运行一次运行需要5.50分钟而不需要5.20分钟.

SSE2怎么能比正常运行慢?可能是因为_mm_set_ps?我使用Apple LLVM编译器(XCode 4)编译代码(所有SSE扩展标志都打开,优化级别为-Os).

没有SSE2的代码

                neuron_sum +=
                fann_mult(weights[i], neurons[i].value) +
                fann_mult(weights[i + 1], neurons[i + 1].value) +
                fann_mult(weights[i + 2], neurons[i + 2].value) +
                fann_mult(weights[i + 3], neurons[i + 3].value);
Run Code Online (Sandbox Code Playgroud)

SSE2代码

                __m128 a_line=_mm_loadu_ps(&weights[i]);
                __m128 b_line=_mm_set_ps(neurons[i+3].value,neurons[i+2].value,neurons[i+1].value,neurons[i].value);
                __m128 c_line=_mm_mul_ps(a_line, b_line);
                neuron_sum+=c_line[0]+c_line[1]+c_line[2]+c_line[3];
Run Code Online (Sandbox Code Playgroud)

c performance sse2 fann

3
推荐指数
1
解决办法
1832
查看次数

训练神经网络进行函数逼近

我完全没有神经网络的经验,现在我只是在玩FANN库来学习它们.因此,目标是训练网络以近似正弦函数.为此,我使用3层NN 1输入,3个隐藏和1个输出神经元.代码是

const unsigned int num_input = 1;
const unsigned int num_output = 1;
const unsigned int num_layers = 3;
const unsigned int num_neurons_hidden = 3;

struct fann *ann;

ann = fann_create_standard(num_layers, num_input, num_neurons_hidden, num_output);

fann_set_activation_steepness_hidden(ann, 1);
fann_set_activation_steepness_output(ann, 1);

fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);

fann_set_train_stop_function(ann, FANN_STOPFUNC_BIT);
fann_set_bit_fail_limit(ann, 0.01f);

fann_set_training_algorithm(ann, FANN_TRAIN_RPROP);

fann_randomize_weights(ann, 0, 1);

for(int i=0; i<2; ++i) {
    for(float angle=0; angle<10; angle+=0.1) {
        float sin_anle = sinf(angle);
        fann_train(ann, &angle, &sin_anle);
    }
}

int k = 0;
for(float angle=0; angle<10; angle+=0.1) { …
Run Code Online (Sandbox Code Playgroud)

c neural-network fann

2
推荐指数
1
解决办法
2099
查看次数

在Visual Studio中逐步处理托管代码和非托管代码

有三个项目:

在项目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的函数调用仍然可以进入并且永远不会进入.

注意:

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

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

感谢您的帮助或建议!

c c++ debugging clr fann

2
推荐指数
1
解决办法
4319
查看次数

在编译C时使用旧版本的共享linux库

我试图使用libfann版本2.0.1而不是最新版本2.2.0,但无法弄清楚如何这样做.有关如何做到这一点的任何想法?

通常是完美的:

gcc fann_calculator.c -o run_fann_calculator -lfann -lm
Run Code Online (Sandbox Code Playgroud)

其中fann_calculator.c包含一个调用神经网络的程序.

谢谢

linux ubuntu shared-libraries dynamic-linking fann

0
推荐指数
1
解决办法
1406
查看次数