iprog4u
Machine Learning in Elixir: Chapter 6 Axon.Display.as_table does not work (Page 133)
Please guide me in the right direction. I am able to get .as_graph() to display the model correctly
Axon.Display.as_graph(model, template)
however when I try to run .as_table() I get an error (CAUTION: wall of error text follows):
Axon.Display.as_table(model, template)
|> IO.puts
** (FunctionClauseError) no function clause matching in Axon.Display.do_axon_to_rows/6
The following arguments were given to Axon.Display.do_axon_to_rows/6:
# 1
%Axon.Node{
id: 5,
name: #Function<194.57606554/2 in Axon.name/2>,
mode: :both,
parent: [4],
parameters: [],
args: [:layer],
op: :softmax,
policy: #Axon.MixedPrecision.Policy<>,
hooks: [],
opts: [],
global_options: [],
op_name: :softmax,
meta: %{},
stacktrace: [
{Axon, :layer, 3, [file: ~c"lib/axon.ex", line: 346]},
{:elixir, :eval_external_handler, 3, [file: ~c"src/elixir.erl", line: 388]},
{:erl_eval, :do_apply, 7, [file: ~c"erl_eval.erl", line: 919]},
{:erl_eval, :expr, 6, [file: ~c"erl_eval.erl", line: 663]},
{:elixir, :eval_forms, 4, [file: ~c"src/elixir.erl", line: 366]},
{Module.ParallelChecker, :verify, 1, [file: ~c"lib/module/parallel_checker.ex", line: 120]}
]
}
# 2
%{
1 => %Axon.Node{
id: 1,
name: #Function<195.57606554/2 in Axon.name/2>,
mode: :both,
parent: [],
parameters: [],
args: [],
op: :input,
policy: #Axon.MixedPrecision.Policy<>,
hooks: [],
opts: [shape: {nil, 748}, optional: false],
global_options: [],
op_name: :input,
meta: nil,
stacktrace: [
{Axon, :layer, 3, [file: ~c"lib/axon.ex", line: 346]},
{:elixir, :eval_external_handler, 3, [file: ~c"src/elixir.erl", line: 388]},
{:erl_eval, :do_apply, 7, [file: ~c"erl_eval.erl", line: 919]},
{:erl_eval, :expr_list, 7, [file: ~c"erl_eval.erl", line: 1207]},
{:erl_eval, :expr, 6, [file: ~c"erl_eval.erl", line: 625]},
{:erl_eval, :expr_list, 7, [file: ~c"erl_eval.erl", line: 1207]}
]
},
2 => %Axon.Node{
id: 2,
name: #Function<194.57606554/2 in Axon.name/2>,
mode: :both,
parent: [1],
parameters: [
%Axon.Parameter{
name: "kernel",
template: #Function<485.57606554/1 in Axon.shape_fun/2>,
shape: nil,
initializer: #Function<3.47872556/3 in Axon.Initializers.glorot_uniform/1>,
children: nil,
type: {:f, 32},
frozen: false,
kind: :parameter
},
%Axon.Parameter{
name: "bias",
template: #Function<485.57606554/1 in Axon.shape_fun/2>,
shape: nil,
initializer: #Function<23.47872556/2 in Axon.Initializers.zeros/0>,
children: nil,
type: {:f, 32},
frozen: false,
kind: :parameter
}
],
args: [:layer, :parameter, :parameter],
op: :dense,
policy: #Axon.MixedPrecision.Policy<>,
hooks: [],
opts: [],
global_options: [],
op_name: :dense,
meta: %{use_bias: true, units: 128},
stacktrace: [
{Axon, :layer, 3, [file: ~c"lib/axon.ex", line: 346]},
{Axon, :dense, 3, [file: ~c"lib/axon.ex", line: 877]},
{:elixir, :eval_external_handler, 3, [file: ~c"src/elixir.erl", line: 388]},
{:erl_eval, :do_apply, 7, [file: ~c"erl_eval.erl", line: 919]},
{:erl_eval, :expr_list, 7, [file: ~c"erl_eval.erl", line: 1207]},
{:erl_eval, :expr, 6, [file: ~c"erl_eval.erl", line: 625]}
]
},
3 => %Axon.Node{
id: 3,
name: #Function<194.57606554/2 in Axon.name/2>,
mode: :both,
parent: [2],
parameters: [],
args: [:layer],
op: :relu,
policy: #Axon.MixedPrecision.Policy<>,
hooks: [],
opts: [],
global_options: [],
op_name: :relu,
meta: %{},
stacktrace: [
{Axon, :layer, 3, [file: ~c"lib/axon.ex", line: 346]},
{:elixir, :eval_external_handler, 3, [file: ~c"src/elixir.erl", line: 388]},
{:erl_eval, :do_apply, 7, [file: ~c"erl_eval.erl", line: 919]},
{:erl_eval, :expr_list, 7, [file: ~c"erl_eval.erl", line: 1207]},
{:erl_eval, :expr, 6, [file: ~c"erl_eval.erl", line: 625]},
{:erl_eval, :expr, 6, [file: ~c"erl_eval.erl", line: 663]}
]
},
4 => %Axon.Node{
id: 4,
name: #Function<194.57606554/2 in Axon.name/2>,
mode: :both,
parent: [3],
parameters: [
%Axon.Parameter{
name: "kernel",
template: #Function<485.57606554/1 in Axon.shape_fun/2>,
shape: nil,
initializer: #Function<3.47872556/3 in Axon.Initializers.glorot_uniform/1>,
children: nil,
type: {:f, 32},
frozen: false,
kind: :parameter
},
%Axon.Parameter{
name: "bias",
template: #Function<485.57606554/1 in Axon.shape_fun/2>,
shape: nil,
initializer: #Function<23.47872556/2 in Axon.Initializers.zeros/0>,
children: nil,
type: {:f, 32},
frozen: false,
kind: :parameter
}
],
args: [:layer, :parameter, :parameter],
op: :dense,
policy: #Axon.MixedPrecision.Policy<>,
hooks: [],
opts: [],
global_options: [],
op_name: :dense,
meta: %{use_bias: true, units: 10},
stacktrace: [
{Axon, :layer, 3, [file: ~c"lib/axon.ex", line: 346]},
{Axon, :dense, 3, [file: ~c"lib/axon.ex", line: 877]},
{:elixir, :eval_external_handler, 3, [file: ~c"src/elixir.erl", line: 388]},
{:erl_eval, :do_apply, 7, [file: ~c"erl_eval.erl", line: 919]},
{:erl_eval, :expr, 6, [file: ~c"erl_eval.erl", line: 663]},
{:elixir, :eval_forms, 4, [file: ~c"src/elixir.erl", line: 366]}
]
},
5 => %Axon.Node{
id: 5,
name: #Function<194.57606554/2 in Axon.name/2>,
mode: :both,
parent: [4],
parameters: [],
args: [:layer],
op: :softmax,
policy: #Axon.MixedPrecision.Policy<>,
hooks: [],
opts: [],
global_options: [],
op_name: :softmax,
meta: %{},
stacktrace: [
{Axon, :layer, 3, [file: ~c"lib/axon.ex", line: 346]},
{:elixir, :eval_external_handler, 3, [file: ~c"src/elixir.erl", line: 388]},
{:erl_eval, :do_apply, 7, [file: ~c"erl_eval.erl", line: 919]},
{:erl_eval, :expr, 6, [file: ~c"erl_eval.erl", line: 663]},
{:elixir, :eval_forms, 4, [file: ~c"src/elixir.erl", line: 366]},
{Module.ParallelChecker, :verify, 1, [file: ~c"lib/module/parallel_checker.ex", line: 120]}
]
}
}
# 3
#Nx.Tensor<
f32[1][784]
Nx.TemplateBackend
>
# 4
%{}
# 5
%{}
# 6
%{num_params: 0, total_param_byte_size: 0}
Attempted function clauses (showing 2 out of 2):
defp do_axon_to_rows(%Axon.Node{id: id, op: structure, op_name: :container, parent: [parents], name: name_fn}, nodes, templates, cache, op_counts, model_info)
defp do_axon_to_rows(%Axon.Node{
id: id,
parent: parents,
parameters: params,
name: name_fn,
opts: opts,
policy: %{params: {_, bitsize}},
op_name: op_name
}, nodes, templates, cache, op_counts, model_info)
(axon 0.7.0) lib/axon/display.ex:93: Axon.Display.do_axon_to_rows/6
(axon 0.7.0) lib/axon/display.ex:85: Axon.Display.axon_to_rows/6
(axon 0.7.0) lib/axon/display.ex:39: Axon.Display.as_table/2
#cell:r744jk7wwgcawf6v:2: (file)
Perhaps not hyper important as the graph contains the same info but it is nice how the table has the labels.
Marked As Solved
iprog4u
Removing specific versions or updating to the latest available version corrected the issue for me. Pol Valente was kind enough to update the Axon lib, thanks Pol!
Mix.install([
:axon,
:nx,
:exla,
:kino,
:table_rex,
:scidata
])
Nx.default_backend(EXLA.Backend)
…
…
…
Axon.Display.as_table(model, template)
|> IO.puts()
+------------------------------------------------------------------------------------------------------------------+
| Model |
+=======================+===============================+==============+===================+=======================+
| Layer | Input Shape | Output Shape | Options | Parameters |
+=======================+===============================+==============+===================+=======================+
| images ( input ) | %{} | f32[1][784] | shape: {nil, 784} | |
| | | | optional: false | |
+-----------------------+-------------------------------+--------------+-------------------+-----------------------+
| dense_0 ( dense ) | %{"images" => "f32[1][784]"} | f32[1][128] | | kernel: f32[784][128] |
| | | | | bias: f32[128] |
+-----------------------+-------------------------------+--------------+-------------------+-----------------------+
| relu_0 ( relu ) | %{"dense_0" => "f32[1][128]"} | f32[1][128] | | |
+-----------------------+-------------------------------+--------------+-------------------+-----------------------+
| dense_1 ( dense ) | %{"relu_0" => "f32[1][128]"} | f32[1][10] | | kernel: f32[128][10] |
| | | | | bias: f32[10] |
+-----------------------+-------------------------------+--------------+-------------------+-----------------------+
| softmax_0 ( softmax ) | %{"dense_1" => "f32[1][10]"} | f32[1][10] | | |
+-----------------------+-------------------------------+--------------+-------------------+-----------------------+
Total Parameters: 101770
Total Parameters Memory: 407.08 kilobytes
Popular Pragmatic Bookshelf topics
As per the title, thanks.
New
Python Testing With Pytest - Chapter 2, warnings for “unregistered custom marks”
While running the smoke tests in Chapter 2, I get these...
New
Hello Brian,
I have some problems with running the code in your book. I like the style of the book very much and I have learnt a lot as...
New
Hi everyone!
There is an error on the page 71 in the book “Programming machine learning from coding to depp learning” P. Perrotta. You c...
New
Hi Travis! Thank you for the cool book! :slight_smile:
I made a list of issues and thought I could post them chapter by chapter. I’m rev...
New
On the page xv there is an instruction to run bin/setup from the main folder. I downloaded the source code today (12/03/21) and can’t see...
New
In case this helps anyone, I’ve had issues setting up the rails source code. Here were the solutions:
In Gemfile, change
gem 'rails'
t...
New
Title: Build a Weather Station with Elixir and Nerves: Problem connecting to Postgres with Grafana on (page 64)
If you follow the defau...
New
Hi all,
currently I wonder how the Tailwind colours work (or don’t work).
For example, in app/views/layouts/application.html.erb I have...
New
@mfazio23
I’m following the indications of the book and arriver ad chapter 10, but the app cannot be compiled due to an error in the Bas...
New
Other popular topics
Stop developing web apps with yesterday’s tools. Today, developers are increasingly adopting Clojure as a web-development platform. See f...
New
I’m thinking of buying a monitor that I can rotate to use as a vertical monitor?
Also, I want to know if someone is using it for program...
New
We have a thread about the keyboards we have, but what about nice keyboards we come across that we want? If you have seen any that look n...
New
In case anyone else is wondering why Ruby 3 doesn’t show when you do asdf list-all ruby :man_facepalming: do this first:
asdf plugin-upd...
New
Saw this on TikTok of all places! :lol:
Anyone heard of them before?
Lite:
New
Hi folks,
I don’t know if I saw this here but, here’s a new programming language, called Roc
Reminds me a bit of Elm and thus Haskell. ...
New
Author Spotlight
Erin Dees
@undees
Welcome to our new author spotlight! We had the pleasure of chatting with Erin Dees, co-author of ...
New
Inside our android webview app, we are trying to paste the copied content from another app eg (notes) using navigator.clipboard.readtext ...
New
Get the comprehensive, insider information you need for Rails 8 with the new edition of this award-winning classic.
Sam Ruby @rubys
...
New
Woke up to this today: Claude Code’s complete source code exposed via npm source map. Not a snippet. All 512,000 lines. 1,900 TypeScript ...
New
Categories:
Sub Categories:
Popular Portals
- /elixir
- /rust
- /wasm
- /ruby
- /erlang
- /phoenix
- /keyboards
- /python
- /js
- /rails
- /security
- /go
- /swift
- /vim
- /clojure
- /java
- /emacs
- /haskell
- /svelte
- /typescript
- /onivim
- /kotlin
- /c-plus-plus
- /crystal
- /tailwind
- /react
- /gleam
- /ocaml
- /flutter
- /elm
- /vscode
- /ash
- /html
- /opensuse
- /deepseek
- /zig
- /centos
- /php
- /scala
- /react-native
- /lisp
- /textmate
- /sublime-text
- /nixos
- /debian
- /agda
- /django
- /deno
- /kubuntu
- /arch-linux
- /nodejs
- /spring
- /ubuntu
- /revery
- /manjaro
- /lua
- /diversity
- /julia
- /markdown
- /quarkus









