# -*- coding: cp936 -*-
#
# pyneurgen神经网络-遗传算法分析包,构建简单的神经网络并进行预测
#下载地址:http://sourceforge.net/projects/pyneurgen/files/
#内部doc帮助文档,简单易懂,但demo不完全。
import random
import math
from pyneurgen.neuralnet import NeuralNet
# struct random input number In range(0.8,1);targetnumber always=1.0
inputdata=[]
target=[]
for i in range(20):
a=[]
a.append(random.uniform(0.8,1))
inputdata.append(a)
target.append([1.0])
# 建立神经网络
net=NeuralNet()
net.init_layers(1,[10],1)#输入、隐含、输出层建立
net.randomize_network()
net.set_halt_on_extremes(True)
net.set_random_constraint(0.5)
net.set_learnrate(.1)
net.set_all_inputs(inputdata)
net.set_all_targets(target)
net.set_learn_range(0,19)
net.set_test_range(16,19)
net.layers[1].set_activation_type('sigmoid')#设定隐含层的激励函数,或者输出函数。
net.learn(epochs=200, show_epoch_results=True,
random_testing=False)#网络开始学习
mse=net.test()
printnet.input_layer.values(),net.output_layer.values()
#predict number:先用学习值的最后一个作为预测值,检验网络是否按照原先的状态运行。
predict =[]#学习值的最后一个值
net.input_layer.load_inputs(predict)#load
for j in range(len(net.layers)-1):#开始预测 运行网络
net.layers[j+1].feed_forward()
print net.output_layer.values()#输出值应和原先的网络的学习值一直
#predict number:开始随机预测
predict =[random.uniform(0.8,1)]
net.input_layer.load_inputs(predict)
for j in range(len(net.layers)-1):
net.layers[j+1].feed_forward()
print net.input_layer.values(),net.output_layer.values()