Published
Edited
Mar 24, 2022
Importers
Also listed in…
Tensorflow
Insert cell
Insert cell
pt = (tensor,args = {}) => {

let {name,verbose=false} = args;

const tensor_string = tensor.toString(true).replace("Tensor","");

// re-renders on verbosity toggle
const render = function() {
let t = tensor_string;
let size = t.slice(t.search(/shape: \[/)+8,t.search(/\]/));
if(parseInt(size) == 1) t = t.replace(/,([^,]*)$/, '$1'); // hopefully not needed in the future
t = verbose? t+"\n}":" ..."+t.slice(t.search(/ values:/)+8).replace(/\r?\n|\r/g,"").replace(/\s+/g," ")+" }";
return html`<span class="observablehq--cellname">${name? name + " = ":""}</span><a><svg width="8" height="8" class="observablehq--caret"><path d=${verbose?'"M4 7L0 1h8z"':'"M7 4L1 8V0z"'} fill="currentColor"></path></svg>${size?"Tensor("+size+")":"Scalar"} {${hljs.highlight('obsjs',t).value.replace(/hljs/g,"observablehq-")}`;
}

// initial render
const elem = html`<span class="observablehq--inspect">${render()}</span>`;

// click interaction for toggling verbose
elem.addEventListener('click', () => {
verbose = !verbose;
elem.innerHTML = '';
elem.appendChild(render());
// for browsers that don’t support ResizeObserver, let them
// know that the cell height has changed.
elem.dispatchEvent(new CustomEvent('load'));
});

// expose the raw value to other cells using viewof
elem.value = tensor;
return elem;
}
Insert cell
hljs = {
const hljs = await require('https://unpkg.com/highlight.js@9.12.0/lib/highlight.js');
hljs.registerLanguage('obsjs', function(hljs) {
return {
beginKeywords: 'Tensor',
keywords: {
"key": 'dtype rank shape values',
"boolean": 'float32 int32 bool'
},
contains: [
hljs.C_NUMBER_MODE
]
};
});
return hljs;
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more