API Go не настолько исчерпывающий, и для упрощения можно сделать несколько дополнений.Однако, учитывая текущий API, можно возможно построить пакетный тензор, используя что-то вроде этого:
var buf bytes.Buffer
for i, img := range images {
bytes, err := gocv.IMEncode(gocv.JPEGFileExt, img)
if err != nil {
fmt.Println("Error")
}
tensor, err = tf.NewTensor(string(bytes))
if err != nil {
fmt.Println("Error")
}
normalized, err := session.Run(
map[tf.Output]*Tensor: { input: tensor },
[]tf.Output{output},
nil)
if _, err := normalized[0].WriteContentsTo(&buf); err != nil {
// Handle error
}
}
batchShape := []int64{len(images), 224, 224, 3}
batch, err := tf.ReadTensor(tf.Float, batchShape, &buf)
if err != nil {
// Handle error
}
// Now feed "batch" to the model
Другой альтернативой было бы сделать это пакетирование в графе, построив графиккоторый упаковывает несколько тензоров одного изображения в пакет, используя операцию Pack
).
Надеюсь, это поможет.
(PS Похоже, вы также спрашивали об этом ввопрос GitHub и тот же ответ там: https://github.com/tensorflow/tensorflow/issues/25440)