<div dir="ltr">Hi Shyh-Kang,<div><br></div><div>I've already converted this model to Nengo 2.0, so you might want to check out the repository here: <a href="https://github.com/hunse/mnist-rbm">https://github.com/hunse/mnist-rbm</a>. </div><div><br></div><div>As for your error, it's because we do ensemble arrays differently now. They're made to look just like ensembles from the outside, so when you do `Connection(layer1.output, layer2.input, function=transform, transform=w2)` it uses the `transform` function as a multidimensional one applied to the entire output of `layer1`. What you actually want to do is `layer1.add_output('transform', function=transform)` and then do `Connection(layer1.transform, layer2.input, transform=w2)` (I've left out a few of the non-pertinent details for simplicity). Does that make sense? </div><div><br></div><div>Also, I'm very unhappy with how things were named in `digit.py`, since `transform` is actually the sigmoid function that the neurons are computing, not really a transform. I revised this when I reworked the model for 2.0, so I think it's a lot clearer now.</div><div><br></div><div>Cheers,</div><div>Eric</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 13 October 2015 at 22:05, 鄭士康 <span dir="ltr"><<a href="mailto:skjeng@ntu.edu.tw" target="_blank">skjeng@ntu.edu.tw</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="ZH-TW" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span lang="EN-US">Hi,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I am trying to convert digit.py from nengo 1.4 to nengo 2.0.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I got digit.py from the model <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-family:"\0065b0\007d30\00660e\009ad4","serif"">“</span><span lang="EN-US">RBM Deep Belief Network for Visual Digit Recognition”<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">provided in Model Archive. <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Could anyone help to solve the following problem?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">When I converted a piece of code: <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">w2=read('mat_2_w.csv')   # weights for layer 2 (computed using standard Matlab learning model)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">b2=read('mat_2_b.csv')   # bias for layer 2 (computed using standard Matlab learning model)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">layer2=net.make_array('layer2',N,len(w2[0]),encoders=[[1]],intercept=(0,0.8),seed=seed)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">bias2=net.make_input('bias2',b2[0])<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">net.connect(bias2,layer2)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">net.connect(layer1,layer2,func=transform,transform=numeric.array(w2).T,pstc=pstc)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">to <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">with net:<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">w2=read('mat_2_w.csv')   # weights for layer 2 (computed using standard Matlab learning model)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">b2=read('mat_2_b.csv')   # bias for layer 2 (computed using standard Matlab learning model)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">bias2=nengo.Node(output=b2[0])<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">layer2=nengo.networks.EnsembleArray(N,n_ensembles=len(w2[0]))<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">nengo.Connection(bias2, layer2.input)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    nengo.Connection(layer1.output, layer2.input, transform=np.array(w2).T, function=transform, 
<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">synapse=pstc)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I got an error message: <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Traceback (most recent call last):<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "D:/KnowThyself/CCN2015/nengoProjects/rbm-vision/digit.py", line 80, in <module><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    nengo.Connection(layer1.output, layer2.input, transform=np.array(w2).T, function=transform, synapse=pstc)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\base.py", line 24, in __call__<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    inst.__init__(*args, **kwargs)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\connection.py", line 249, in __init__<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    self.function_info = function  # Must be set after transform<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\base.py", line 63, in __setattr__<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    super(NengoObject, self).__setattr__(name, val)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\params.py", line 239, in __set__<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    super(FunctionParam, self).__set__(instance, function_info)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\params.py", line 69, in __set__<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    self.validate(instance, value)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\connection.py", line 90, in validate<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">    "(%d)" % (type_pre, size_mid, transform.shape[1]))<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">ValueError: Validation error when setting 'Connection.function_info': Node output size (1) not equal to transform input size (1000)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I believe this error is due to the setting of a parameter, function=transform; however,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I tried many ways and cannot get it work, and<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I cannot find the answer in the documents and the code in Github.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Thank you for answering my question in advance.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Sincerely,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Shyh-Kang Jeng<u></u><u></u></span></p>
</div>
</div>

<br>_______________________________________________<br>
nengo-user mailing list<br>
<a href="mailto:nengo-user@ctnsrv.uwaterloo.ca">nengo-user@ctnsrv.uwaterloo.ca</a><br>
<a href="http://ctnsrv.uwaterloo.ca/mailman/listinfo/nengo-user" rel="noreferrer" target="_blank">http://ctnsrv.uwaterloo.ca/mailman/listinfo/nengo-user</a><br>
<br></blockquote></div><br></div>