标签: feed-forward

训练OCR的前馈神经网络

目前我正在学习神经网络,我正在尝试创建一个可以训练识别手写字符的应用程序.对于这个问题,我使用前馈神经网络,当我训练它识别1,2或3个不同的字符时,它似乎有效.但是当我尝试使网络学习超过3个字符时,它将停留在40 - 60%左右的错误百分比.

我尝试了多层和更少/更多的神经元,但我似乎无法正确,现在我想知道前馈神经网络是否能够识别那么多信息.

一些统计:

网络类型:前馈神经网络

输入神经元: 100(10*10)网格用于绘制字符

输出神经元:重新定位的字符数量

有谁知道我的架构中可能存在的缺陷是什么?输入神经元太多了吗?前馈神经网络不具备角色定位能力吗?

ocr artificial-intelligence backpropagation neural-network feed-forward

11
推荐指数
2
解决办法
9850
查看次数

输入层是否应包含偏置神经元?

我想知道:在多层前馈神经网络中,输入层是否应包含偏置神经元,或者这在隐藏层中是否有用?如果是这样,为什么?

谢谢你,
Tunnuz

neural-network feed-forward bias-neuron

8
推荐指数
1
解决办法
3217
查看次数

java中的神经网络实现

我试图用反向传播在Java中实现FFNN,并且不知道我做错了什么.当我在网络中只有一个神经元时,它工作,但我写了另一个类来处理更大的网络,没有任何收敛.这似乎是数学中的问题 - 或者更确切地说是我对数学的实现 - 但我已经多次检查它并且我找不到任何错误.这应该有效.
节点类:

package arr;

import util.ActivationFunction;
import util.Functions;

public class Node {
    public ActivationFunction f;
    public double output;
    public double error;

    private double sumInputs;
    private double sumErrors;
    public Node(){
        sumInputs = 0;
        sumErrors = 0;
        f = Functions.SIG;
        output = 0;
        error = 0;
    }
    public Node(ActivationFunction func){
        this();
        this.f = func;
    }

    public void addIW(double iw){
        sumInputs += iw;
    }
    public void addIW(double input, double weight){
        sumInputs += (input*weight);
    }
    public double calculateOut(){
        output = …
Run Code Online (Sandbox Code Playgroud)

java backpropagation neural-network feed-forward

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

Keras LSTM状态与带有滑动窗口的前馈网络

在Keras的LSTM实现中的默认模式(状态= False)下,一批中的所有样本都是独立的,并且状态不会从一个样本传播到下一个样本。根据我的理解,输入序列长度(L)是使LSTM保持状态的唯一方法。但是,这限制了状态传播到一个固定数目的时间步长,即大号。从理论上讲,与具有固定大小的滑动输入窗口的前馈NN相比,此操作模式将具有什么优势。这样,到NN的每个输入都是L个连续输入值的向量。

从理论上讲,LSTM应该能够学习跨越1000个时间步长的长期依赖关系。但这是否不要求我有L = 1000,因为没有办法捕获比输入序列长的依赖项?我知道可以通过格式化输入数据来使用有状态模式,这样每批的第i个样本都是相关的。我很难理解默认的LSTM模式相对于带有滑动窗口的前馈NN优于输入数据有什么优势?

feed-forward lstm keras

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

神经网络为每次执行提供不同的结果

这是我使用keras和tensorflow作为后端运行的确切代码.对于具有相同程序的每次运行,训练结果是不同的.有时它在第400次迭代中获得100%的准确度,有时在第200次中获得100%的准确度.

training_data = np.array([[0,0],[0,1],[1,0],[1,1]], "float32")
target_data = np.array([[0],[1],[1],[0]], "float32")

model = Sequential()
model.add(Dense(4, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mean_squared_error',
              optimizer='adam',
              metrics=['binary_accuracy'])

model.fit(training_data, target_data, epochs=500, verbose=2)


Epoch 403/500
0s - loss: 0.2256 - binary_accuracy: 0.7500
Run Code Online (Sandbox Code Playgroud)

那么为什么在列车数据修复后每次执行结果都会发生变化?非常感谢一些解释.

neural-network feed-forward keras tensorflow

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

在Java中实现神经网络:训练和反向传播问题

我正在尝试用Java实现前馈神经网络.我创建了三个类NNeuron,NLayer和NNetwork."简单"计算似乎很好(我得到正确的总和/激活/输出),但是当涉及到培训过程时,我似乎没有得到正确的结果.谁能告诉我我做错了什么?NNetwork类的整个代码很长,所以我发布导致问题的部分:[编辑]:这实际上几乎都是NNetwork类

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class NNetwork
{
    public static final double defaultLearningRate = 0.4;
    public static final double defaultMomentum = 0.8;

    private NLayer inputLayer;
    private ArrayList<NLayer> hiddenLayers;
    private NLayer outputLayer;

    private ArrayList<NLayer> layers;

    private double momentum = NNetwork1.defaultMomentum;    // alpha: momentum, default! 0.3

    private ArrayList<Double> learningRates;

    public NNetwork (int nInputs, int nOutputs, Integer... neuronsPerHiddenLayer)
    {
        this(nInputs, nOutputs, Arrays.asList(neuronsPerHiddenLayer));
    }

    public NNetwork (int nInputs, int nOutputs, List<Integer> neuronsPerHiddenLayer)
    {
        // the number of neurons on the last …
Run Code Online (Sandbox Code Playgroud)

java backpropagation neural-network feed-forward

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

神经网络对游戏检查者的理想输入

我是神经网络的新手,我正在设计一个前馈神经网络,以学习玩游戏检查器。作为输入,必须提供董事会,而输出则应该有输赢的机会。但是,如何将跳棋盘理想地转换为一行数字以进行输入呢?每个方块上有32个可能的方块和5种不同的可能性(国王或白人或黑人玩家和自由位置)。如果我为每个正方形的每个可能值提供一个输入单位,则为32 *5。另一种选择是:

  Free Position: 0 0

  Piece of white: 0 0.5 && King Piece of white: 0 1

  Piece of black: 0.5 1 && King Piece of black: 1 0
Run Code Online (Sandbox Code Playgroud)

在这种情况下,输入长度将仅为64,但是我不确定哪个会带来更好的结果?

artificial-intelligence machine-learning neural-network feed-forward

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

Pytorch,即使在最简单的网络上也无法运行backward()而不出现错误

我是 pytorch 的新手,即使是最简单的网络,我也无法在不生成错误的情况下运行backward()。例如:

(Linear(6, 6)(Variable(torch.zeros([10, 6]))) - Variable(torch.zeros([10, 6]))).backward()
Run Code Online (Sandbox Code Playgroud)

抛出以下错误

{RuntimeError}element 0 of variables does not require grad and does not have a grad_fn
Run Code Online (Sandbox Code Playgroud)

我在代码中做错了什么导致了这个问题?

machine-learning neural-network feed-forward pytorch

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