如何在 golang 中的文本上执行 DL - RNN 模型?
How to execute DL - RNN model on text in golang?
我已经根据 reddit/twitter 对话在 tensor-flow
中构建了 RNN
模型。我把它保存在 pb
。有谁知道如何通过 golang
中的模型传递原始文本字符串并生成输出?
modeldir := "/my_model.pb"
// Buffer input text
var buffer bytes.Buffer
args := os.Args[1:]
for _, arg := range args {
buffer.WriteString(arg + " ")
}
inputText := buffer.String()
// Load the serialized GraphDef from a file.
model, err := ioutil.ReadFile(modeldir)
if err != nil {
log.Fatal(err)
}
// Construct an in-memory graph from the serialized form.
graph := tf.NewGraph()
if err := graph.Import(model, ""); err != nil {
log.Fatal(err)
}
// Create a session for inference over graph.
session, err := tf.NewSession(graph, nil)
if err != nil {
log.Fatal(err)
}
defer session.Close()
您可以使用 tfgo 轻松加载到 Go 中并使用经过训练的张量流模型:只需使用 tf.saved_model.builder.SavedModelBuilder
导出经过训练的模型,如 tfgo
自述文件中所示。
但是,您只需从图中提取输入占位符,然后使用它来馈送网络。
假设您导出模型时调用它 my_model
并用标签 tag
标记它。我们还假设您的输入占位符名为 "Placeholder"。此外,您必须知道输出节点的名称。我们称它为 output/node/path/op
。那么您的代码应该如下所示:
import (
"fmt"
tg "github.com/galeone/tfgo"
tf "github.com/tensorflow/tensorflow/tensorflow/go"
"flags"
)
func main() {
model := tg.LoadModel("my_model", []string{"tag"}, nil)
// Buffer input text
var buffer bytes.Buffer
args := os.Args[1:]
for _, arg := range args {
buffer.WriteString(arg + " ")
}
// handle the retunred error below, if any
inputText, _ := tf.NewTensor(buffer.String())
results := model.Exec([]tf.Output{
model.Op("output/node/path/op", 0),
}, map[tf.Output]*tf.Tensor{
model.Op("Placeholder", 0): inputText,
})
// do something with results[0]
}
我已经根据 reddit/twitter 对话在 tensor-flow
中构建了 RNN
模型。我把它保存在 pb
。有谁知道如何通过 golang
中的模型传递原始文本字符串并生成输出?
modeldir := "/my_model.pb"
// Buffer input text
var buffer bytes.Buffer
args := os.Args[1:]
for _, arg := range args {
buffer.WriteString(arg + " ")
}
inputText := buffer.String()
// Load the serialized GraphDef from a file.
model, err := ioutil.ReadFile(modeldir)
if err != nil {
log.Fatal(err)
}
// Construct an in-memory graph from the serialized form.
graph := tf.NewGraph()
if err := graph.Import(model, ""); err != nil {
log.Fatal(err)
}
// Create a session for inference over graph.
session, err := tf.NewSession(graph, nil)
if err != nil {
log.Fatal(err)
}
defer session.Close()
您可以使用 tfgo 轻松加载到 Go 中并使用经过训练的张量流模型:只需使用 tf.saved_model.builder.SavedModelBuilder
导出经过训练的模型,如 tfgo
自述文件中所示。
但是,您只需从图中提取输入占位符,然后使用它来馈送网络。
假设您导出模型时调用它 my_model
并用标签 tag
标记它。我们还假设您的输入占位符名为 "Placeholder"。此外,您必须知道输出节点的名称。我们称它为 output/node/path/op
。那么您的代码应该如下所示:
import (
"fmt"
tg "github.com/galeone/tfgo"
tf "github.com/tensorflow/tensorflow/tensorflow/go"
"flags"
)
func main() {
model := tg.LoadModel("my_model", []string{"tag"}, nil)
// Buffer input text
var buffer bytes.Buffer
args := os.Args[1:]
for _, arg := range args {
buffer.WriteString(arg + " ")
}
// handle the retunred error below, if any
inputText, _ := tf.NewTensor(buffer.String())
results := model.Exec([]tf.Output{
model.Op("output/node/path/op", 0),
}, map[tf.Output]*tf.Tensor{
model.Op("Placeholder", 0): inputText,
})
// do something with results[0]
}