遵循PyBrain文档,使用模块和连接构建网络,我正在逐步构建神经网络(与使用buildNetwork快捷方式相反).我正在构建一个简单的3层(输入,隐藏,输出)神经网络.如何正确添加偏置单元?
我猜我在构建一个BiasUnit模块:
b = BiasUnit(name='bias')
network.addModule(b)
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?我必须创建FullConnection对象吗?如果是这样,我应该连接什么?
我想在半监督(约束)聚类上进行一些实验,特别是作为实例级成对约束(Must-Link或Can not-Link约束)提供的背景知识.我想知道是否有任何好的开源软件包实现半监督聚类?我试着看看PyBrain,mlpy,scikit和orange,我找不到任何受约束的聚类算法.特别是,我对受约束的K-Means或基于约束密度的聚类算法(如C-DBSCAN)感兴趣.Matlab,Python,Java或C++中的包将是首选,但不必限于这些语言.
我有一些工作代码可以正确地将csv文件中的数据加载到PyBrain数据集中:
def old_get_dataset():
reader = csv.reader(open('test.csv', 'rb'))
header = reader.next()
fields = dict(zip(header, range(len(header))))
print header
# assume last field in csv is single target variable
# and all other fields are input variables
dataset = SupervisedDataSet(len(fields) - 1, 1)
for row in reader:
#print row[:-1]
#print row[-1]
dataset.addSample(row[:-1], row[-1])
return dataset
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试重写此代码以使用numpy的loadtxt函数.我相信addSample可以采用numpy数组,而不必一次添加一行数据.
假设我加载的numpy数组是mxn维,那么如何将第一个mx(n-1)数据集作为第一个参数传递,最后一列数据作为第二个参数?这就是我正在尝试的:
def get_dataset():
array = numpy.loadtxt('test.csv', delimiter=',', skiprows=1)
# assume last field in csv is single target variable
# and all other fields are input variables
number_of_columns …Run Code Online (Sandbox Code Playgroud) 有一个函数,如:y = sin(x)我想使用PyBrain网络来适应函数,这就是我所做的:当你运行它时你会得到我得到的,获得的数据远不应该是它应该是什么.
from pybrain.datasets import SupervisedDataSet
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
import pickle
import scipy as sp
import numpy as np
import pylab as pl
x = np.linspace(0, 4*np.pi, 100)
ds = SupervisedDataSet(1,1)
for i in x:
ds.addSample(i,sin(i))
print ds
n = buildNetwork(ds.indim,3,3,3,ds.outdim,recurrent=True)
t = BackpropTrainer(n,learningrate=0.01,momentum=0.5,verbose=True)
t.trainOnDataset(ds,1000)
t.testOnData(verbose=True)
fileObject = open('trained_net', 'w')
pickle.dump(n, fileObject)
fileObject.close()
fileObject = open('trained_net','r')
net = pickle.load(fileObject)
y = []
for i in x:
y.append(net.activate(i))
pl.plot(x,y)
pl.plot(x,np.sin(x))
pl.show()
Run Code Online (Sandbox Code Playgroud) 我正在尝试用Pybrain训练一个简单的神经网络.训练结束后,我想确认nn是否按预期工作,因此我激活了我用来训练它的相同数据.但是每次激活都会输出相同的结果.我是否误解了关于神经网络的基本概念,还是这是设计的?
我已经尝试改变隐藏节点的数量,隐藏类型,偏差,学习率,训练时期的数量和动力无济于事.
这是我的代码......
from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
net = buildNetwork(2, 3, 1)
net.randomize()
ds = SupervisedDataSet(2, 1)
ds.addSample([77, 78], 77)
ds.addSample([78, 76], 76)
ds.addSample([76, 76], 75)
trainer = BackpropTrainer(net, ds)
for epoch in range(0, 1000):
error = trainer.train()
if error < 0.001:
break
print net.activate([77, 78])
print net.activate([78, 76])
print net.activate([76, 76])
Run Code Online (Sandbox Code Playgroud)
这是结果的一个例子......正如您所看到的,即使激活输入不同,输出也是相同的.
[ 75.99893007]
[ 75.99893007]
[ 75.99893007]
Run Code Online (Sandbox Code Playgroud) 我一直在努力使用pybrain创建一个神经网络,并且由于某种原因训练后传播它无法训练我的网络.我在out维度中使用两个以上类的任何数据集都会将我的所有观察结果都集中到一个类别中.有谁知道为什么会这样?代码和一些输出如下.
import scipy
import numpy
from pybrain.datasets import ClassificationDataSet
from pybrain.utilities import percentError
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.modules import SoftmaxLayer
from sklearn.metrics import precision_score,recall_score,confusion_matrix
def makeDataset(CSVfile,ClassFile):
#import the features to data, and their classes to dataClasses
data=numpy.genfromtxt(CSVfile,delimiter=",")
classes=numpy.genfromtxt(ClassFile,delimiter=",")
print("Building the dataset from CSV files")
#Initialize an empty Pybrain dataset, and populate it
alldata=ClassificationDataSet(len(data[0]),1,nb_classes=3)
for count in range(len((classes))):
alldata.addSample(data[count],[classes[count]])
return alldata
def makeNeuralNet(alldata,trainingPercent=.3,hiddenNeurons=5,trainingIterations=20):
#Divide the data set into training and non-training data
testData, trainData = alldata.splitWithProportion(trainingPercent) …Run Code Online (Sandbox Code Playgroud) 我试图训练ActionValueNetwork一个简单的XOR函数,但结果看起来像随机.
""" Reinforcement Learning to learn xor function
"""
# generic import
import numpy as np
import random
# pybrain import
from pybrain.rl.explorers import EpsilonGreedyExplorer
from pybrain.rl.agents import LearningAgent
from pybrain.rl.learners.valuebased import ActionValueNetwork, NFQ
# The parameters of your algorithm
av_network = ActionValueNetwork(2, 2) # 2 dimensions in input, 2 actions possible (1 or 0)
learner = NFQ()
learner._setExplorer(EpsilonGreedyExplorer(0.0)) # No exploration
agent = LearningAgent(av_network, learner)
# The training
for _ in xrange(1,25): # we iterate 25 times …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 arac 与 PyBrain 一起使用,当我调用 net.convertToFastNetwork() 或尝试导入 arac.pybrainbridge(导入 arac 工作正常)时,出现此错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pafnouti/Documents/Project/arac/src/python/arac/pybrainbridge.py", line 51, in <module>
import arac.cppbridge as cppbridge
File "/home/pafnouti/Documents/Project/arac/src/python/arac/cppbridge.py", line 31, in <module>
_cppbridge = swig_import_helper()
File "/home/pafnouti/Documents/Project/arac/src/python/arac/cppbridge.py", line 26, in swig_import_helper
_mod = imp.load_module('_cppbridge', fp, pathname, description)
ImportError: libarac.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
来自这段代码:
try:
fp, pathname, description = imp.find_module('_cppbridge', [dirname(__file__)])
except ImportError:
import _cppbridge
return _cppbridge
if fp …Run Code Online (Sandbox Code Playgroud) 我试图在pyBrain上进行最简单的回归,但不知怎的,我失败了.
神经网络应该学习Y = 3*X的函数
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.datasets import SupervisedDataSet
from pybrain.structure import FullConnection, FeedForwardNetwork, TanhLayer, LinearLayer, BiasUnit
import matplotlib.pyplot as plt
from numpy import *
n = FeedForwardNetwork()
n.addInputModule(LinearLayer(1, name = 'in'))
n.addInputModule(BiasUnit(name = 'bias'))
n.addModule(TanhLayer(1,name = 'tan'))
n.addOutputModule(LinearLayer(1, name = 'out'))
n.addConnection(FullConnection(n['bias'], n['tan']))
n.addConnection(FullConnection(n['in'], n['tan']))
n.addConnection(FullConnection(n['tan'], n['out']))
n.sortModules()
# initialize the backprop trainer and train
t = BackpropTrainer(n, learningrate = 0.1, momentum = 0.0, verbose = True)
#DATASET
DS = SupervisedDataSet( 1, 1 )
X = …Run Code Online (Sandbox Code Playgroud) 我通过 PyCharm 安装了 PyBrain,当我尝试编译时出现以下错误:
Traceback (most recent call last):
File "C:/Users/Marcus/PycharmProjects/ANN/ann.py", line 2, in <module>
from pybrain.tools.shortcuts import buildNetwork
File "C:\Python34\lib\site-packages\pybrain\__init__.py", line 1, in <module>
from structure.__init__ import *
ImportError: No module named 'structure'
Run Code Online (Sandbox Code Playgroud)
但是,在文件夹 site-packages\pybrain\ 中有一个名为“structure”的文件夹,其中包含(我认为是)pybrain 要求的内容。

我对 Python 还很陌生,所以我还没有完全习惯这种安装包的事情。是我错过了什么吗?我试图在 PyCharm 包安装程序中搜索名为“结构”的包,但没有(只有“结构”)。
提前致谢
编辑:评论要求我进一步解释我如何安装软件包。在 PyCharm 中,我去项目设置 -> 项目解释器 -> 搜索“pybrain”

pybrain ×10
python ×8
dbscan ×1
importerror ×1
k-means ×1
numpy ×1
python-3.x ×1
regression ×1
swig ×1