MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / encode

Method encode

tensorflow/go/tensor.go:395–426  ·  view source on GitHub ↗
(v reflect.Value, shape []int64)

Source from the content-addressed store, hash-verified

393}
394
395func (e *stringEncoder) encode(v reflect.Value, shape []int64) error {
396 if v.Kind() == reflect.String {
397 if err := binary.Write(e.offsets, nativeEndian, e.offset); err != nil {
398 return err
399 }
400 var (
401 s = v.Interface().(string)
402 src = C.CString(s)
403 srcLen = C.size_t(len(s))
404 dst = (*C.char)(unsafe.Pointer(&e.data[e.offset]))
405 dstLen = C.size_t(uint64(len(e.data)) - e.offset)
406 )
407 e.offset += uint64(C.TF_StringEncode(src, srcLen, dst, dstLen, e.status.c))
408 C.free(unsafe.Pointer(src))
409 return e.status.Err()
410 }
411
412 if v.Kind() == reflect.Slice {
413 expected := int(shape[0])
414 if v.Len() != expected {
415 return fmt.Errorf("mismatched slice lengths: %d and %d", v.Len(), expected)
416 }
417 }
418
419 subShape := shape[1:]
420 for i := 0; i < v.Len(); i++ {
421 if err := e.encode(v.Index(i), subShape); err != nil {
422 return err
423 }
424 }
425 return nil
426}
427
428type stringDecoder struct {
429 offsets io.Reader

Callers 1

NewTensorFunction · 0.95

Calls 6

InterfaceMethod · 0.80
freeMethod · 0.80
KindMethod · 0.45
WriteMethod · 0.45
ErrMethod · 0.45
IndexMethod · 0.45

Tested by

no test coverage detected