1c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie#cython: boundscheck=False
2c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie#cython: wraparound=False
3c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie#cython: infer_types=True
4c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoieimport numpy as np
5c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiecimport numpy as np
6c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
7c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiefrom tensorflow.python.util import compat
8c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
9c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
10c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendFloat32ArrayToTensorProto(
11c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.float32_t, ndim=1] nparray):
12c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
13c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
14c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
15c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.float_val.append(nparray[i])
16c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
17c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
18c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendFloat64ArrayToTensorProto(
19c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.float64_t, ndim=1] nparray):
20c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
21c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
22c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
23c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.double_val.append(nparray[i])
24c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
25c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
26c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendInt32ArrayToTensorProto(
27c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.int32_t, ndim=1] nparray):
28c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
29c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
30c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
31c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.int_val.append(nparray[i])
32c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
334c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkinsdef AppendUInt32ArrayToTensorProto(
344c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins    tensor_proto, np.ndarray[np.uint32_t, ndim=1] nparray):
354c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins  cdef long i, n
364c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins  n = nparray.size
374c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins  for i in range(n):
384c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins    tensor_proto.uint32_val.append(nparray[i])
39c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
40c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendInt64ArrayToTensorProto(
41c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.int64_t, ndim=1] nparray):
42c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
43c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
44c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
45c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.int64_val.append(nparray[i])
46c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
474c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkinsdef AppendUInt64ArrayToTensorProto(
484c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins    tensor_proto, np.ndarray[np.uint64_t, ndim=1] nparray):
494c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins  cdef long i, n
504c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins  n = nparray.size
514c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins  for i in range(n):
524c7e02c082fdf3b4b04e42f1880cf6e0ff4fc409Peter Hawkins    tensor_proto.uint64_val.append(nparray[i])
53c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
54c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendUInt8ArrayToTensorProto(
55c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.uint8_t, ndim=1] nparray):
56c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
57c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
58c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
59c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.int_val.append(nparray[i])
60c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
61c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
62c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendUInt16ArrayToTensorProto(
63c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.uint16_t, ndim=1] nparray):
64c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
65c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
66c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
67c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.int_val.append(nparray[i])
68c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
69c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
70c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendInt16ArrayToTensorProto(
71c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.int16_t, ndim=1] nparray):
72c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
73c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
74c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
75c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.int_val.append(nparray[i])
76c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
77c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
78c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendInt8ArrayToTensorProto(
79c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.int8_t, ndim=1] nparray):
80c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
81c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
82c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
83c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.int_val.append(nparray[i])
84c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
85c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
86c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendComplex64ArrayToTensorProto(
87c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.complex64_t, ndim=1] nparray):
88c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
89c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
90c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
91c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.scomplex_val.append(nparray[i].real)
92c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.scomplex_val.append(nparray[i].imag)
93c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
94c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
95c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendComplex128ArrayToTensorProto(
96c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto, np.ndarray[np.complex128_t, ndim=1] nparray):
97c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
98c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
99c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
100c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.dcomplex_val.append(nparray[i].real)
101c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.dcomplex_val.append(nparray[i].imag)
102c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
103c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
104c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendObjectArrayToTensorProto(tensor_proto, np.ndarray nparray):
105c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
106c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
107c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
108c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.string_val.append(compat.as_bytes(nparray[i]))
109c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
110c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie
111c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoiedef AppendBoolArrayToTensorProto(tensor_proto, nparray):
112c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  cdef long i, n
113c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  n = nparray.size
114c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie  for i in range(n):
115c49eeeee5463aff02b4bafbd1596288ba4b27739Allen Lavoie    tensor_proto.bool_val.append(np.asscalar(nparray[i]))
116