<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:新細明體;
        panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
        {font-family:新細明體;
        panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@新細明體";
        panose-1:2 2 5 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ZH-TW" link="blue" vlink="purple" style="text-justify-trim:punctuation">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I am trying to convert digit.py from nengo 1.4 to nengo 2.0.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I got digit.py from the model <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"新細明體","serif"">“</span><span lang="EN-US">RBM Deep Belief Network for Visual Digit Recognition”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">provided in Model Archive. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Could anyone help to solve the following problem?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">When I converted a piece of code: <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></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)<o:p></o:p></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)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></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)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">bias2=net.make_input('bias2',b2[0])<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">net.connect(bias2,layer2)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">net.connect(layer1,layer2,func=transform,transform=numeric.array(w2).T,pstc=pstc)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">to <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">with net:<o:p></o:p></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)<o:p></o:p></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)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">bias2=nengo.Node(output=b2[0])<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">layer2=nengo.networks.EnsembleArray(N,n_ensembles=len(w2[0]))<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">nengo.Connection(bias2, layer2.input)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    nengo.Connection(layer1.output, layer2.input, transform=np.array(w2).T, function=transform, 
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">synapse=pstc)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I got an error message: <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Traceback (most recent call last):<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "D:/KnowThyself/CCN2015/nengoProjects/rbm-vision/digit.py", line 80, in <module><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    nengo.Connection(layer1.output, layer2.input, transform=np.array(w2).T, function=transform, synapse=pstc)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\base.py", line 24, in __call__<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    inst.__init__(*args, **kwargs)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\connection.py", line 249, in __init__<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    self.function_info = function  # Must be set after transform<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\base.py", line 63, in __setattr__<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    super(NengoObject, self).__setattr__(name, val)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\params.py", line 239, in __set__<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    super(FunctionParam, self).__set__(instance, function_info)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\params.py", line 69, in __set__<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    self.validate(instance, value)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\Users\User\Anaconda\lib\site-packages\nengo\connection.py", line 90, in validate<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    "(%d)" % (type_pre, size_mid, transform.shape[1]))<o:p></o:p></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)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I believe this error is due to the setting of a parameter, function=transform; however,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I tried many ways and cannot get it work, and<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I cannot find the answer in the documents and the code in Github.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thank you for answering my question in advance.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Sincerely,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Shyh-Kang Jeng<o:p></o:p></span></p>
</div>
</body>
</html>