Here is (I think) a translation of that dyalog apl 'read' function into J:

read=:3 :0
  r=. ,(8#2)#:a.i.fread y
  NB. ??? or instead of a. use A=: a.{~#.|."1#:i.#a.
  'magic count rows count'=. #.4 32$r
  if. 2051=magic do.
    #.0|:(count,rows,cols,8)$128|.r
  elseif. 2049=magic do.
    #.0|:(count,8)$64}.r
  elseif. do. *'fail' end.
)

That said, note that I was not able to find documentation on the bit
order for Dyalog's NREAD (with 11 for the type argument). If I guessed
wrong (you'll get the error from *'fail'), try the suggestion in the
??? comment. (But I may have made other mistakes - without a test
file, and knowing what kind of result it should get, I don't really
know.)

That said, this routine does not look like it's relevant to the .npz
save file format, so it must be for some other save file format.

Thanks,

-- 
Raul

On Tue, Dec 4, 2018 at 6:21 PM Mike Powell <mdpow...@gmail.com> wrote:
>
> Devon,
>
> If it’s just MNIST data you need, I was able to reformat files from 
> http://yann.lecun.com/exdb/mnist/ <http://yann.lecun.com/exdb/mnist/> quite 
> satisfactorily.
>
> I used Dyalog APL and did actually write up the format as a pdf file. The 
> function I used went like this:
>
> r←read file;⎕IO;tn;d;magic;count;rows;cols
>
>  ⍝ Retrieves file contents.
>
>  tn←⍬ ⋄ ⎕IO←0 ⋄ r←⍬
>  :Trap 0⍴0
>      ⍝ Read the file's contents as bits
>      tn←file ⎕NTIE 0
>      r←⎕NREAD tn,11,2↑⎕NSIZE tn
>      ⎕NUNTIE tn
>      magic←2⊥32⍴r
>      count←2⊥32⍴32↓r
>      :If magic=2051
>          rows←2⊥32⍴64↓r
>          cols←2⊥32⍴96↓r
>          r←2⊥1 2 3 0⍉(count,rows,cols,8)⍴128↓r
>      :ElseIf magic=2049
>          r←2⊥1 0⍉(count,8)⍴64↓r
>      :EndIf
>  :Else
>      ⎕NUNTIE tn
>  :EndTrap
>
> If you’d like the PDF, let me know.
>
> Mike
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to