是否有Golang API将数据转换为序列化的tf.Example,也称为tensorflow tfrecords。
我可以找到一个Python api tf.python_io.TFRecordWriter()
来实现这一目标。
但是找不到golang的例子。
我想这样做因为我使用golang客户端来调用tensorflow服务而我的输入功能是nn是一个SparseTensor。
答案 0 :(得分:1)
tf.Example
指的是协议缓冲区,而tfrecords
通常指的是存储"记录"的文件格式。以字符串的形式(这就是为什么tf.python_io.TFRecordWriter.write()
采用字符串)。所以这两者是分开的东西,与技术无关。虽然通常会将tf.Example
协议缓冲区序列化为字符串,但TFRecordWriter
中的每个记录都有一个。
也就是说,模型通常以tf.Example
张量的形式将序列化STRING
协议缓冲区作为输入作为输入。如果是这种情况,那么您希望在Go中构建tf.Example
协议缓冲区,然后使用proto.Marshal
构建要提供的tf.Tensor
对象。
不幸的是,自2018年1月起,您必须自己为tf.Example
protos生成Go文件。这可以通过以下方式完成:
# Fetch the tools
GOPATH=$(go env GOPATH)
go get github.com/golang/protobuf/proto
go get github.com/golang/protobuf/protoc-gen-go
# Create a directory to generate the files
mkdir -p /tmp/protos/out
cd /tmp/protos
# Clone the TensorFlow sources to get the source .proto files
git clone https://github.com/tensorflow/tensorflow ./src
PATH=$PATH:${GOPATH}/bin
# Generate Go source files from the .proto files.
# Assuming protoc is installed.
# See https://github.com/google/protobuf/releases
protoc \
-I ./src \
--go_out ./out \
./src/tensorflow/core/framework/*.proto ./src/tensorflow/core/example/*.proto
rm -rf ./src
这将在.pb.go
中生成一堆/tmp/protos/out
个文件,这些文件可用于构建tf.Example
协议缓冲区结构以进行编组。
希望能为您提供足够的信息。
答案 1 :(得分:0)
对于仍然有兴趣与^[1-9]\d*(?: ?(?:[a-zA-Z]|[/-] ?\d+[a-z]?))?$
和TFRecords
进行交互的任何人,都有一个由NVIDIA创建并具有MIT许可证的库,名为 go-tfdata :{{3 }}
它可以将任何记录/样本源转换为tf.data.Example
-tf.data.Example
文件集。
此外,它本机支持TAR存档到TFRecord的转换。
从示例开始-将TAR转换为TFRecord很简单:
TFRecord