Pracuję trochę z Tensorlow.js i chcę wykreślić niektóre dane, które są przechowywane jako TF.Tensors. Nie mogę znaleźć metody, która konwertuje je do zwykłych numerów JS.

const a = tf.Scalar(1)
const b = tf.Scalar(2)
var array = []
// Now o want to push the numbers 1 and 2 to mye array
array.push(a)
array.push(b)

Ten kod daje moją tablicę obiektów Tensora. Chcę tablicę liczb. Jakikolwiek pomysł, jak postępować? Dziękuję Ci.

2
hamsterman 4 czerwiec 2018, 17:38

3 odpowiedzi

Najlepsza odpowiedź

.dataSync() Pliki do pobierania wartości GPU i zwraca Float32Array wartości zawartych w Tensor. Więc jeśli chcesz przechowywać wartości jako tensors w tablicy i chcesz uzyskać tablicę liczb z niego, można go zmapować za pomocą map() Aby utworzyć tablicę pobranych wartości, a ponieważ używasz Scalars w przykładzie można bezpośrednio mapować Pierwszy element w Float32Array, aby uzyskać jego wartość:

let values = array.map(t => t.dataSync()[0])

Przykład:

const a = tf.scalar(1)
const b = tf.scalar(2)
var array = []
array.push(a)
array.push(b)

let values = array.map(t => t.dataSync()[0])
console.log(values);
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.11.2">
</script>
1
Sebastian Speitel 4 czerwiec 2018, 16:47

skalar . Get ()

const a = tf.scalar(1)
const b = tf.scalar(2)
const array = [a, b].map(s => s.get()); // array [1, 2]
0
Yas 17 sierpień 2018, 05:55

Możesz użyć a.get() i b.get(), aby uzyskać ich wartości. Kod pracujący to:

const a = tf.scalar(1)
const b = tf.scalar(2)
var array = []
// Now o want to push the numbers 1 and 2 to mye array
array.push(a.get())
array.push(b.get())
console.log(array) // Outputs [1,2]

Możesz wypróbować kod roboczy w Codepen

2
Md Johirul Islam 4 czerwiec 2018, 15:01