Even though I have used J on and off for a few eyars now, I have not really
used jConsole at all. But I did just try it:
**************************************
shell-promtp> ./jconsole
load jpath '~Projects/jlearn/init.ijs'
...
load jpath '~temp/simple_conv_test.ijs'
OUTPUT fit__pipe INPUT
**************************************
The above should work.
My project is in Projects/jlearn
My test script it in temp/simple_conv_test.ijs
You may have you repository clone in some other location, so you will have to
find it when you load init.ijs.
On Friday, April 19, 2019, 1:25:03 PM GMT+9, jonghough via Programming
<[email protected]> wrote:
Sorry, as I said in a previous email, the example I gave with runConv will
not work, as it was made for a much older version of the project. Please try
this as is, in jqt.
NB. ==============================
A1=: 3 8 8 $ 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 0 0 0 0 0 0 0 0, 1 1 1 1 1 1 1
1, 0 0 0 0 0 0 0 0, 1 1 1 1 1 1 1 1, 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 0 0 0 0
0 0 0 0
A2=: 3 8 8 $ 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 1 1 1 1 1 1 1 1, 1 1 1 1 1 1 1
1, 0 0 0 0 0 0 0 0
A3=: 3 8 8 $ 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 0 0 0 0 0 0 0 0
A4=: 3 8 8 $ 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 0 0 0 0 0 0 0 0, 1 1 1 1 1 1 1
1, 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0
A5=: 2 |. A4
B1=: |:"2 A1
B2=: |:"2 A2
B3=: |:"2 A3
B4=: |:"2 A4
B5=: |:"2 A5
C1=: 3 8 8 $ 1 0 0 0 0 0 0 1, 0 1 0 0 0 0 1 0, 0 0 1 0 0 1 0 0, 0 0 0 1 1 0 0
0, 0 0 0 1 1 0 0 0, 0 0 1 0 0 1 0 0, 0 1 0 0 0 0 1 0, 1 0 0 0 0 0 0 1
C2=: 3 8 8 $ 1 0 0 0 0 0 0 0, 0 1 0 0 0 0 0 0, 0 0 1 0 0 0 0 0, 0 0 0 1 0 0 0
0, 0 0 0 0 1 0 0 0, 0 0 0 0 0 1 0 0, 0 0 0 0 0 0 1 0, 0 0 0 0 0 0 0 1
C3=: 3 8 8 $ 1 0 1 0 1 0 0 0, 0 1 0 1 0 1 0 0, 0 0 1 0 1 0 1 0, 0 0 0 1 0 1 0
1, 1 0 0 0 1 0 1 0, 0 1 0 0 0 1 0 1, 1 0 1 0 0 0 1 0, 0 1 0 1 0 0 0 1
C4=: |."1 C3
C5=: 3 8 8 $ 1 1 1 1 0 0 0 0, 0 0 1 1 1 1 0 0, 0 0 0 0 1 1 1 1, 1 1 0 0 0 0 1
1, 1 1 1 1 0 0 0 0, 0 0 1 1 1 1 0 0, 0 0 0 0 1 1 1 1, 1 1 0 0 0 0 1 1
A=: 5 3 8 8 $, A1, A2, A3, A4, A5
B=: 5 3 8 8 $, B1, B2, B3, B4, B5
C=: 5 3 8 8 $, C1, C2, C3, C4, C5
INPUT=: A,B,C
OUTPUT=: 15 3 $ 1 0 0, 1 0 0, 1 0 0, 1 0 0, 1 0 0, 0 1 0, 0 1 0, 0 1 0, 0 1 0,
0 1 0, 0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1
pipe=: (10;10;'softmax';1;'l2';0.0001) conew 'NNPipeline'
c1=: ((10 3 4 4);2;'relu';'adam';0.01;0) conew 'Conv2D'
b1=: (0; 1 ;0.0001;10;0.01) conew 'BatchNorm2D'
a1=: 'relu' conew 'Activation'
c2=: ((12 10 2 2); 1;'relu';'adam';0.01;0) conew 'Conv2D'
b2=: (0; 1 ;0.0001;5;0.01) conew 'BatchNorm2D'
a2=: 'relu' conew 'Activation'
p1=: 2 conew 'PoolLayer'
fl=: 3 conew 'FlattenLayer'
fc=: (12;3;'softmax';'adam';0.01) conew 'SimpleLayer'
b3=: (0; 1 ;0.0001;2;0.01) conew 'BatchNorm'
a3=: 'softmax' conew 'Activation'
addLayer__pipe c1
addLayer__pipe p1
NB.addLayer__pipe b1
addLayer__pipe a1
addLayer__pipe c2
NB.addLayer__pipe b2
addLayer__pipe a2
addLayer__pipe fl
addLayer__pipe fc
NB.addLayer__pipe b3
addLayer__pipe a3
NB. OUTPUT fit__pipe INPUT NB. <----- run this. maybe 3 or 4 times
NB. OUTPUT -:"1 1 (=>./)"1 >{: predict__pipe INPUT NB. <----- then run this to
check accuracy
NB. ==============================
I did all my work using jQT, not jconsole.
My recommendation is:
1. open jqt and locate the project (hopefully you put it in projects folder)
2. load init.ijs (which will load everything)
3. put the above code into a J temp file.
4. run the temp file (and remember to run this line: OUTPUT fit__pipe INPUT )
On Friday, April 19, 2019, 1:05:52 PM GMT+9, Brian Schott
<[email protected]> wrote:
I have now cloned the repo and below I show my directory.
server:~ brian$ cd /Users/brian/j64-807-user/nn
server:nn brian$ pwd
/Users/brian/j64-807-user/nn
server:nn brian$ ls /Users/brian/j64-807-user/nn/jlearn-master
LICENSE init.ijs optimize
README.md iris_som_all.png plot
adv iris_som_clusters.png rbf
clustering iris_som_planes.png run.ijs
datasets iris_som_umatrix.png score
densityestimation jlearn.gif serialize
dr jlearn.jproj solverexamples
energy kdtree som
ensemble knn test
genetic linear text
gp mixtures trees
impute mlp utils
server:nn brian$
Below is what I copied into jconsole.
cocurrent 'NN'
coclass 'Conv2D'
coinsert 'NNLayer'
cocurrent'NNPipeline'
create=: 3 : 0
if. a: -: y do.
bias=: ''
''
else.
'shape stride activation solverType alpha clampFlg'=: y
assert. 4 = # shape NB. wxhxdinxdout
assert. 1 <: stride
assert. alpha > 0
ks=: 2 3 $ (3 # stride) ,}.shape NB. kernel shape
filter=: activation createRandomWeightsNormal shape
reordered=: 1 0 2 3 |: filter
setActivationFunctions activation
solver=: (<filter) setSolver tolower solverType
e__solver=: alpha
bias=: ''
clampLow=: _1
clampHigh=: 1
clampV=: ]
if. clampFlg do. clampV=: clamp end.
type=: 'Conv2D'
end.
)
A1=: 3 8 8 $ 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 0 0 0 0 0 0 0 0, 1 1 1 1 1 1
1 1, 0 0 0 0 0 0 0 0, 1 1 1 1 1 1 1 1, 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 0
0 0 0 0 0 0 0
A2=: 3 8 8 $ 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 1 1 1 1 1 1 1 1, 1 1 1 1 1 1
1 1, 0 0 0 0 0 0 0 0
A3=: 3 8 8 $ 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 0 0 0 0 0 0 0 0
A4=: 3 8 8 $ 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0, 0 0 0 0 0 0 0 0, 1 1 1 1 1 1
1 1, 1 1 1 1 1 1 1 1, 0 0 0 0 0 0 0 0
A5=: 2 |. A4
B1=: |:"2 A1
B2=: |:"2 A2
B3=: |:"2 A3
B4=: |:"2 A4
B5=: |:"2 A5
C1=: 3 8 8 $ 1 0 0 0 0 0 0 1, 0 1 0 0 0 0 1 0, 0 0 1 0 0 1 0 0, 0 0 0 1 1 0
0 0, 0 0 0 1 1 0 0 0, 0 0 1 0 0 1 0 0, 0 1 0 0 0 0 1 0, 1 0 0 0 0 0 0 1
C2=: 3 8 8 $ 1 0 0 0 0 0 0 0, 0 1 0 0 0 0 0 0, 0 0 1 0 0 0 0 0, 0 0 0 1 0 0
0 0, 0 0 0 0 1 0 0 0, 0 0 0 0 0 1 0 0, 0 0 0 0 0 0 1 0, 0 0 0 0 0 0 0 1
C3=: 3 8 8 $ 1 0 1 0 1 0 0 0, 0 1 0 1 0 1 0 0, 0 0 1 0 1 0 1 0, 0 0 0 1 0 1
0 1, 1 0 0 0 1 0 1 0, 0 1 0 0 0 1 0 1, 1 0 1 0 0 0 1 0, 0 1 0 1 0 0 0 1
C4=: |."1 C3
C5=: 3 8 8 $ 1 1 1 1 0 0 0 0, 0 0 1 1 1 1 0 0, 0 0 0 0 1 1 1 1, 1 1 0 0 0 0
1 1, 1 1 1 1 0 0 0 0, 0 0 1 1 1 1 0 0, 0 0 0 0 1 1 1 1, 1 1 0 0 0 0 1 1
A=: 5 3 8 8 $, A1, A2, A3, A4, A5
B=: 5 3 8 8 $, B1, B2, B3, B4, B5
C=: 5 3 8 8 $, C1, C2, C3, C4, C5
INPUT=: A,B,C
OUTPUT=: 15 3 $ 1 0 0, 1 0 0, 1 0 0, 1 0 0, 1 0 0, 0 1 0, 0 1 0, 0 1 0, 0 1
0, 0 1 0, 0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1
pipe=: (10;10;'softmax';1;'l2';0.0001) conew 'NNPipeline'
|value error: create__w
| create__w x
Then I changed `create` a little to eliminate an assert and got another
error so I removed `clampFlg' from `pipe`. I got more errors trying to
enter `pipe` and decided to ask for help.
I now see that the above does NOT enclose the input in
runConv=: 3 : 0
)
like one of your previous statement of the example. Maybe that is a
problem, too.
Maybe with this info you can tell me how to connect the last example to
your cloned code?
Thanks,
On Thu, Apr 18, 2019 at 8:08 PM jonghough via Programming <
[email protected]> wrote:
> >
> > pipe=: (10;10;'softmax';1;'l2';0.0001) conew 'NNPipeline'
> > |assertion failure: create__w
> > | 4 =#shape
> I think this assertion error is in 'Conv2D' (conv2d.ijs). Not
> 'NNPipeline'. The shape (first constructor argument needs 4 numbers)
> e.g.
> c1=: ((10 3 4 4);2;'relu';'adam';0.01;0) conew 'Conv2D'
>
> the shape is 10 3 4 4.
>
> If you copy pasted my example I can't see how you got an assertion error
> there. Did you clone the whole repo?
>
> Regards,
>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm