标签: neural-network

如何使用神经网络学习虚拟生物?

我正在做一个简单的学习模拟,屏幕上有多个生物.他们应该学习如何吃,使用他们简单的神经网络.它们有4个神经元,每个神经元激活一个方向的运动(从鸟的视角看是一个2D平面,因此只有四个方向,因此需要四个输出).他们唯一的输入是四只"眼睛".当时只有一只眼睛可以活动,它基本上用作指向最近物体(绿色食物块或其他生物体)的指针.

因此,网络可以这样想象: 在此输入图像描述

有机体看起来像这样(在理论和实际模拟中,它们真的是红色的块,它们的眼睛围着它们):

在此输入图像描述

这就是它的样子(这是一个老版本,眼睛仍然不起作用,但它是相似的):

在此输入图像描述

现在我已经描述了我的一般想法,让我了解问题的核心......

  1. 初始化 | 首先,我创造了一些生物和食物.然后,将其神经网络中的所有16个权重设置为随机值,如下所示:weight = random.random()*threshold*2.阈值是一个全局值,描述每个神经元需要获得多少输入才能激活("激活").通常设置为1.

  2. 学习 | 默认情况下,神经网络中的权重每步降低1%.但是,如果某些有机体实际上设法吃东西,那么最后一个有效输入和输出之间的联系就会得到加强.

但是,有一个大问题.我认为这不是一个好方法,因为他们实际上并没有学到任何东西!只有那些随机设定为有益的初始体重的人才会有机会吃东西,然后只有他们的体重会增强!那些与他们的关系设置得很糟糕的人呢?他们只会死,不会学习.

我该如何避免这种情况?想到的唯一解决方案是随机增加/减少权重,这样最终有人会得到正确的配置,并偶然吃掉一些东西.但我觉得这个解决方案非常粗糙和丑陋.你有什么想法?

编辑: 谢谢你的答案!其中每一个都非常有用,有些只是更相关.我决定使用以下方法:

  1. 将所有权重设置为随机数.
  2. 随着时间的推移减少重量.
  3. 有时随机增加或减少重量.单位越成功,其权重就越小.新
  4. 当有机体吃东西时,增加相应输入和输出之间的重量.

python simulation artificial-intelligence machine-learning neural-network

35
推荐指数
3
解决办法
4266
查看次数

为什么输入在张量流中的tf.nn.dropout中缩放?

我无法理解为什么dropout在tensorflow中这样工作.CS231n的博客说,"dropout is implemented by only keeping a neuron active with some probability p (a hyperparameter), or setting it to zero otherwise."你也可以从图片中看到这个(取自同一网站) 在此输入图像描述

来自tensorflow网站, With probability keep_prob, outputs the input element scaled up by 1 / keep_prob, otherwise outputs 0.

现在,为什么输入元素按比例放大1/keep_prob?为什么不保持输入元素的概率而不是用它来缩放1/keep_prob

machine-learning neural-network deep-learning tensorflow

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

什么是Caffe中的'lr_policy`?

我只是试着找出如何使用Caffe.为此,我只是看了一下.prototxt示例文件夹中的不同文件.有一个我不明白的选择:

# The learning rate policy
lr_policy: "inv"
Run Code Online (Sandbox Code Playgroud)

可能的值似乎是:

  • "fixed"
  • "inv"
  • "step"
  • "multistep"
  • "stepearly"
  • "poly"

有人可以解释一下这些选择吗?

machine-learning neural-network gradient-descent deep-learning caffe

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

为什么Cross Entropy方法优于Mean Squared Error?在什么情况下这不起作用?

尽管上述两种方法都提供了更好的分数以更好地接近预测,但仍然优选交叉熵.是在每种情况下还是有一些特殊情况我们更喜欢交叉熵而不是MSE?

machine-learning backpropagation neural-network mean-square-error cross-entropy

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

如何将Keras丢失输出记录到文件中

当您运行Keras神经网络模型时,您可能会在控制台中看到类似的内容:

Epoch 1/3
   6/1000 [..............................] - ETA: 7994s - loss: 5111.7661
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,损失有望得到改善.我希望随着时间的推移将这些损失记录到文件中,以便我可以从中学习.我试过了:

logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我不确定在这种情况下我需要什么级别的日志记录.

我也尝试过使用类似的回调:

def generate_train_batch():
    while 1:
        for i in xrange(0,dset_X.shape[0],3):
            yield dset_X[i:i+3,:,:,:],dset_y[i:i+3,:,:]

class LossHistory(keras.callbacks.Callback):
    def on_train_begin(self, logs={}):
        self.losses = []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))
logloss=LossHistory()
colorize.fit_generator(generate_train_batch(),samples_per_epoch=1000,nb_epoch=3,callbacks=['logloss'])
Run Code Online (Sandbox Code Playgroud)

但显然这不是写入文件.无论采用何种方法,通过回调或记录模块或其他任何方式,我都希望听到您将keras神经网络丢失记录到文件中的解决方案.谢谢!

python logging machine-learning neural-network keras

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

在神经网络上阅读书籍所需的先决条件(并理解它们)

我一直在努力学习神经网络一段时间,我可以在线理解一些基本的教程,并且我已经能够完成神经计算的部分- 一个简介,但即使在那里,我也在很多数学,在前几章后它完全超出了我的脑海.即便如此,我能找到的最少的书"math-y".

它不是我害怕数学或任何东西,它只是我没有学到我需要的东西,我不确定我需要什么.我目前就读于我当地的大学,正在努力学习我需要在Comp中输入MS的课程.Sci计划(我的学士学位是商业/信息系统),我还没有走得太远.根据该大学的小课程描述,NN实际上涵盖了一个关于模式识别的电气工程课程(这对我来说很奇怪,这门课程是EE),它有一些EE先决条件,我不需要进入MS Comp .科学.程序.

我对这个话题非常感兴趣,并且知道我最终想要了解更多关于它的问题,问题是,我不知道我需要先知道什么.以下是我认为可能需要的主题,但这只是无知的推测:

  • 单变量微积分(我已经使用了Calc I和II,所以我想我已经涵盖了这里,只是列出了完整性)
  • 多变量微积分
  • 线性代数(我还没有正式采用这个,但实际上可以理解我在维基百科和其他网站上设置的许多概念)
  • 离散数学(另一个我没有正式采取,但我自己学到了一部分
  • 图论
  • 概率论
  • 贝叶斯统计
  • 电路设计
  • 其他数学?
  • 其他comp sci主题

显然,这里也有一个神经科学组成部分,但实际上,当他们谈论它应用于NN时,我实际上没有遇到任何麻烦,主要是因为它的概念

简而言之,有人可以铺设一条人们需要真正理解的半透明路径,阅读书籍并最终实施神经网络吗?

math computer-science artificial-intelligence neural-network

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

如何将图像输入神经网络?

我理解神经网络是如何工作的,但如果我想将它们用于像实际字符识别这样的图像处理,我无法理解如何将图像数据输入神经网络.

我有一个非常大的A信件形象.也许我应该尝试从图像中获取一些信息/规格,然后使用该规范的值向量?它们将成为神经网络的输入?

谁已经做过这样的事情,你能解释一下如何做到这一点吗?

pattern-recognition image-processing computer-vision neural-network

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

什么是神经网络背景下的投影层?

我目前正在尝试理解word2vec神经网络学习算法背后的架构,用于根据其上下文将单词表示为向量.

在阅读了Tomas Mikolov论文后,我发现了他定义为投影层的内容.虽然这个术语在提到word2vec时被广泛使用,但我无法找到它在神经网络环境中的实际定义的精确定义.

Word2Vec神经网络架构

我的问题是,在神经网络环境中,什么是投影层?它是隐藏图层的名称,它与以前节点的链接共享相同的权重吗?它的单位实际上是否具有某种激活功能?

在本教程中还可以找到更广泛地引用该问题的另一个资源,该教程还引用了第67页的投影层.

nlp machine-learning neural-network word2vec

33
推荐指数
2
解决办法
7940
查看次数

为什么预测需要Keras的批量大小?

在Keras中,为了预测数据的类,predict_classes()使用了.

例如:

classes = model.predict_classes(X_test, batch_size=32)
Run Code Online (Sandbox Code Playgroud)

我的问题是,我知道batch_size在训练中的用法,但为什么需要batch_size预测呢?它是如何工作的?

classification neural-network keras

33
推荐指数
1
解决办法
1万
查看次数

Keras - categorical_accuracy和sparse_categorical_accuracy之间的区别

categorical_accuracysparse_categorical_accuracyKeras有什么区别?这些指标文档中没有任何提示,并且通过询问谷歌博士,我也没有找到答案.

源代码可以在这里找到:

def categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.argmax(y_true, axis=-1),
                          K.argmax(y_pred, axis=-1)),
                  K.floatx())


def sparse_categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.max(y_true, axis=-1),
                          K.cast(K.argmax(y_pred, axis=-1), K.floatx())),
                  K.floatx())
Run Code Online (Sandbox Code Playgroud)

classification machine-learning neural-network deep-learning keras

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