Чтобы изменить размер тензора, можно использовать 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])
}