请提供一种使用神经网络实现此任务的方法。 - >如何将值输入神经网络 - >使用神经网络
答案 0 :(得分:0)
您是否查看了Google的开源神经网络库TensorFlow? They 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))