TensorFlow.js Изменение размера Tensor 3D - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть 3D-тензор со следующими размерами: Ширина х Высота х Глубина. Мне нужно изменить размеры томов переменного размера до определенной формы, скажем, 256 x 256 x 256. К сожалению, в TensorFlow.js есть набор методов для изменения размера, таких как tf.image.resizeBilinear & tf .image.resizeNearestNeighbor работает только для 2D-изображений. Есть ли обходной путь, чтобы эти методы работали в трехмерном пространстве?

1 Ответ

0 голосов
/ 19 ноября 2018

Чтобы изменить размер тензора, можно использовать tf.reshape , если входной размер совпадает с выходным размером

const x = tf.tensor(Array.from({length :64}, (_, i) => i), [4, 4]);
x.reshape([1, 16])

Одно из применений изменения формы - при создании пакетов из исходного набора данных

Если входной и выходной размеры не совпадают, можно использовать tf.slice

const x = tf.tensor(Array.from({length :64}, (_, i) => i), [4, 4, 4]);
x.slice([1, 1, 1], [2, 2, 2]) // we are taking the 8 values at the center of the cube

Последний может использоваться для обрезки изображения с формой [ height, width, channels]

// t is a tensor
// edge is the size of an edge of the cube
const cropImage = (t, edge) => {
 shape = t.shape;
 startCoord = shape.map(i => (i - edge) / 2)
 return t.slice(startCoord, [edge, edge, edge])
 // to keep the number of channels 
 return t.slice([...startCoord.slice(0, shape.length - 1), 0], [edge, edge, channels])
 }
...