History log of /external/tensorflow/tensorflow/go/operation.go
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
fe41d05e7c8343ed53fc788d6c312792b390f679 16-May-2017 Asim Shankar <ashankar@google.com> Go: Keep errors in Go.

Helps with #9931

- graph.go: Return a nil Operation if the operation creation failed.
This ensures that accidental usage of the nil operation results in
a panic/stacktrace purely in Go (nil pointer dereference) instead
of a SIGSEGV in the underlying C API.

- operation.go: Attempt to help in the developer find the root cause
of the nil pointer dereference with a chattier panic message.

PiperOrigin-RevId: 156220056
/external/tensorflow/tensorflow/go/operation.go
ccbc8991db3943ef984405881a1c917c530f902f 05-Apr-2017 A. Unique TensorFlower <gardener@tensorflow.org> Merge changes from github.
Change: 152200430
/external/tensorflow/tensorflow/go/operation.go
edc4dd62615b7e1ee7906f35099ed2e0a7d0a8ef 09-Feb-2017 Asim Shankar <ashankar@google.com> Go: Add Output.DataType()
Change: 147043532
/external/tensorflow/tensorflow/go/operation.go
c995ee586cfcce29a10b6e05140f1cc7c6c13a16 25-Jan-2017 Asim Shankar <ashankar@google.com> Go: Output.Shape now returns a Shape object.

Output.Shape may be only partially known, hence the recently introduced Shape
type is a more appropriate return value.
Change: 145481782
/external/tensorflow/tensorflow/go/operation.go
8f6cb22c675b5c0b553334a8f04daef462905d69 16-Nov-2016 Jonathan Hseu <jhseu@google.com> Rename TF_Port to TF_Output and add a TF_Input type.
Change: 139377074
/external/tensorflow/tensorflow/go/operation.go
47318618b24d493877668750f84d114179120ca5 14-Oct-2016 Asim Shankar <ashankar@google.com> go: Add Operation.OutputListSize

This will be needed for generating the function wrappers for ops that produce a
list of tensors as output.

Another step towards #10
Change: 136191993
/external/tensorflow/tensorflow/go/operation.go
b5b1671163c90cf786fe0c65ca6754a85d017847 07-Oct-2016 Asim Shankar <ashankar@google.com> go: Introduce Graph.AddOperation to add operations to the Graph.

Export an API to add operations to the graph.

I also intend to use this API in a code generator that will generate
Go sources files containing functions for each OpDef (and all
this generated code will be in a separate package).

While at it, also changed some tests to use the "sub-tests"
feature in Go 1.7 (https://blog.golang.org/subtests)

Another step in the journey of #10
Change: 135493412
/external/tensorflow/tensorflow/go/operation.go
7cacfdf03872c36cfc3f43e75e8c342234160e3a 28-Sep-2016 Asim Shankar <ashankar@google.com> go: Add an example.

Add an example (that will appear in Go doc) for a real use of the Go TensorFlow
APIs - using a pre-defined image recognition model for inference.

While at it a couple of minor tweaks:
- NewSession now accepts 'nil' for options as the documentation says it does
- Convenience accessors for the Outputs of an Operation
- Ability to extract (possibly partial) shapes from an Output

Another step towards #10
Change: 134560938
/external/tensorflow/tensorflow/go/operation.go
bb2aa864b335d18d8468d66cb3dd67203484e2d3 23-Sep-2016 Asim Shankar <ashankar@google.com> go: Prevent a Graph from being GCed while an Operation is alive.

And also add trivial accessors for Name() and Type() to the Operation type.

The lifetime of TF_Operation* objects is tied to the lifetime of the TF_Graph*
that they come from in the C API. Prior to this commit, it was possible for the
Go Graph object to be garbage collected even while the Operation object is
still alive.

The added test demonstrates this problem and fails with the following
if the Operation type doesn't hold on to a reference to the Graph:

=== RUN TestOperationLifetime
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x80 addr=0x0 pc=0x886ebc4]

runtime stack:
runtime.throw(0xc73afc7, 0x2a)
go/gc/src/runtime/panic.go:569 +0x9e
runtime.sigpanic()
go/gc/src/runtime/sigpanic_unix.go:12 +0x2cc

goroutine 34 [syscall, locked to thread]:
runtime.cgocall(0x7733410, 0xc420055e28, 0x0)
go/gc/src/runtime/cgocall.go:131 +0x110 fp=0xc420055df8 sp=0xc420055db8 pc=0x75e64a0
tensorflow/go/tensorflow._Cfunc_TF_OperationName(0x7f4c9f59b790, 0x0)
??:0 +0x4a fp=0xc420055e28 sp=0xc420055df8 pc=0x764884a
tensorflow/go/tensorflow.(*Operation).Name(0xc4201760c0, 0x0, 0x0)
/build/work/c9dcfe7aa482d82c72c0b2b6c0351d7a/tensorflow/go/operation.go:32 +0x78 fp=0xc420055e70 sp=0xc420055e28 pc=0x7649248
tensorflow/go/tensorflow.TestOperationLifetime(0xc4201a00c0)
tensorflow/go/operation_test.go:45 +0x7e fp=0xc420055f68 sp=0xc420055e70 pc=0x764409e
testing.tRunner(0xc4201a00c0, 0xc748ed0)
go/gc/src/testing/testing.go:610 +0x81 fp=0xc420055f90 sp=0xc420055f68 pc=0x76589a1
runtime.goexit()
go/gc/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc420055f98 sp=0xc420055f90 pc=0x7642c91
created by testing.(*T).Run
go/gc/src/testing/testing.go:646 +0x2ec

This is yet another step towards #10
Change: 134086736
/external/tensorflow/tensorflow/go/operation.go
31e0b3bef5fa5e2108f8923633022bbd29b3d287 23-Aug-2016 Jonathan Hseu <jhseu@google.com> Rename Port to Output in the Go API.
Change: 131089292
/external/tensorflow/tensorflow/go/operation.go
783c52edeb3c676937dbb97ed0d40958015050d6 23-Aug-2016 Jonathan Hseu <jhseu@google.com> Initial version of the Go API. The API is subject to change.

Remaining work to do:
- Generated ops.
- Generated protocol buffers.
- A few calls requiring protocol buffers aren't in this change.
Change: 131066649
/external/tensorflow/tensorflow/go/operation.go