继续使用神经网络进行短名单

时间:2016-08-11 17:07:03

标签: java neural-network artificial-intelligence

请提供一种使用神经网络实现此任务的方法。 - >如何将值输入神经网络 - >使用神经网络

1 个答案:

答案 0 :(得分:0)

您是否查看了Google的开源神经网络库TensorFlowThey support recurrent neural networks,这就是你所描述的。

我注意到你问题中的java标签;不幸的是,TensorFlow是一个Python库。如有必要,您始终可以从TensorFlow导出模型的权重和偏差,并使用Java重建受过训练的网络。我不确定是否有任何现有的Java工具可用于重建递归神经网络,但从头开始这样做听起来是可行的。

EDIT(重组神经网络的详细信息):

有关从TensorFlow打印/保存权重和偏差的详细信息,请参阅here(我最近发布了有关该主题的问题,并收到了有用的答案)。至于用Java建模网络,这里有一些我为前馈(非经常性)网络编写的不完整的python代码,你可以翻译"进入Java并根据自己的需要进行调整:

import numpy as np

#I copied this function from an answer here: 
#https://stackoverflow.com/questions/34968722/softmax-function-python
def softmax(values):
   values = [x for x in values]
   return np.exp(values) / np.sum(np.exp(values), 0)

def rectify(ls):
 values = ls
 for i in range(len(values)):
    values[i] = values[i] * (values[i] > 0)
 return values

class Neuron:
 def __init__(self, weights, bias):
    self.weights = weights
    self.bias = bias
 def compute(self, inputs):
    sum = self.bias
    for i in range(len(inputs)):
        sum += self.weights[i] * inputs[i]
    return sum

class Layer:
 def __init__(self, weightSets, biases):
    self.neurons = []
    for i in range(len(weightSets)):
        neuron = Neuron(weightSets[i], biases[i])
        self.neurons.append(neuron)
 def compute(self, inputs):
    outputs = []
    for neuron in self.neurons:
        outputs.append(neuron.compute(inputs))
    return outputs

def networkCompute(inputs):
 global layer1, layer2, layer3
 v = rectify(layer1.compute(inputs))
 v = rectify(layer2.compute(v))
 return softmax(layer3.compute(v))