onnxruntime 0.7.3-x64-mingw → 0.7.5-x64-mingw

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8ec1a3fef4dce07d9b39f242436d62679ce5abb59778afdcdb9caa21d5d7440
4
- data.tar.gz: 97ab3d7402f59079aee3f9ae855639563510b2528aeac84602660186248ccbf5
3
+ metadata.gz: 668db69d787cdb1bea80307d8a6c0a9c60f298a0555aac81ac66cf3631d8ad67
4
+ data.tar.gz: 55c050a749fbcb2785fec2aa24d353a351c859f8dfc8660c4f3820eb179ebf0c
5
5
  SHA512:
6
- metadata.gz: e23924a1799e9f8cd3806ef11af4ba9c40ca098404d792ad4c99959548ff5e5b07e59dac8b130a136ab0a960b940870d19187fcc73bc9b1113aade7725c090b1
7
- data.tar.gz: 2c39f4b86e3fd39947a1952511837440e1bd7aa9cd1774f76c7e733ac7ddcba92a904e827ca55c690482b2820b935f8e9649a7a6d3027dbc2c1a1bfe9c2ae49d
6
+ metadata.gz: f025d67f5d75d2986ed4437b62f8db49c861992b651810cf070d6d169dd347e5bfa3818cf0d46e86432a21e11dd8c070a717c91cfbed21022780baf99368a7c2
7
+ data.tar.gz: 108e3992ae311f1db00a0ecc2fb5ef7f14b8bcff6d8ebb5a738af748b8bf29a338552ddf10a8b66ad75a21266fb241141a3836093864870d95fca5d7fb77fa3a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.7.5 (2023-02-11)
2
+
3
+ - Updated ONNX Runtime to 1.14.0
4
+
5
+ ## 0.7.4 (2022-10-30)
6
+
7
+ - Updated ONNX Runtime to 1.13.1
8
+
1
9
  ## 0.7.3 (2022-07-23)
2
10
 
3
11
  - Updated ONNX Runtime to 1.12.0
data/LICENSE.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  MIT License
2
2
 
3
3
  Copyright (c) Microsoft Corporation
4
- Copyright (c) 2019-2022 Andrew Kane
4
+ Copyright (c) 2019-2023 Andrew Kane
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -43,11 +43,11 @@ Get metadata
43
43
  model.metadata
44
44
  ```
45
45
 
46
- Load a model from a string
46
+ Load a model from a string or other `IO` object
47
47
 
48
48
  ```ruby
49
- byte_str = StringIO.new("...")
50
- model = OnnxRuntime::Model.new(byte_str)
49
+ io = StringIO.new("...")
50
+ model = OnnxRuntime::Model.new(io)
51
51
  ```
52
52
 
53
53
  Get specific outputs
@@ -59,7 +59,7 @@ model.predict({x: [1, 2, 3]}, output_names: ["label"])
59
59
  ## Session Options
60
60
 
61
61
  ```ruby
62
- OnnxRuntime::Model.new(path_or_bytes, {
62
+ OnnxRuntime::Model.new(path_or_io, {
63
63
  enable_cpu_mem_arena: true,
64
64
  enable_mem_pattern: true,
65
65
  enable_profiling: false,
@@ -93,7 +93,7 @@ model.predict(input_feed, {
93
93
 
94
94
  ## Inference Session API
95
95
 
96
- You can also use the Inference Session API, which follows the [Python API](https://microsoft.github.io/onnxruntime/python/api_summary.html).
96
+ You can also use the Inference Session API, which follows the [Python API](https://onnxruntime.ai/docs/api/python/api_summary.html).
97
97
 
98
98
  ```ruby
99
99
  session = OnnxRuntime::InferenceSession.new("model.onnx")
@@ -55,58 +55,12 @@ module OnnxRuntime
55
55
  end
56
56
  end
57
57
 
58
- # session
59
- @session = ::FFI::MemoryPointer.new(:pointer)
60
- from_memory =
61
- if path_or_bytes.respond_to?(:read)
62
- path_or_bytes = path_or_bytes.read
63
- true
64
- else
65
- path_or_bytes = path_or_bytes.to_str
66
- path_or_bytes.encoding == Encoding::BINARY
67
- end
68
-
69
- if from_memory
70
- check_status api[:CreateSessionFromArray].call(env.read_pointer, path_or_bytes, path_or_bytes.bytesize, session_options.read_pointer, @session)
71
- else
72
- check_status api[:CreateSession].call(env.read_pointer, ort_string(path_or_bytes), session_options.read_pointer, @session)
73
- end
58
+ @session = load_session(path_or_bytes, session_options)
74
59
  ObjectSpace.define_finalizer(self, self.class.finalize(@session))
75
60
 
76
- # input info
77
- # don't free allocator
78
- allocator = ::FFI::MemoryPointer.new(:pointer)
79
- check_status api[:GetAllocatorWithDefaultOptions].call(allocator)
80
- @allocator = allocator
81
-
82
- @inputs = []
83
- @outputs = []
84
-
85
- # input
86
- num_input_nodes = ::FFI::MemoryPointer.new(:size_t)
87
- check_status api[:SessionGetInputCount].call(read_pointer, num_input_nodes)
88
- num_input_nodes.read(:size_t).times do |i|
89
- name_ptr = ::FFI::MemoryPointer.new(:string)
90
- check_status api[:SessionGetInputName].call(read_pointer, i, @allocator.read_pointer, name_ptr)
91
- # freed in node_info
92
- typeinfo = ::FFI::MemoryPointer.new(:pointer)
93
- check_status api[:SessionGetInputTypeInfo].call(read_pointer, i, typeinfo)
94
- @inputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
95
- allocator_free name_ptr
96
- end
97
-
98
- # output
99
- num_output_nodes = ::FFI::MemoryPointer.new(:size_t)
100
- check_status api[:SessionGetOutputCount].call(read_pointer, num_output_nodes)
101
- num_output_nodes.read(:size_t).times do |i|
102
- name_ptr = ::FFI::MemoryPointer.new(:string)
103
- check_status api[:SessionGetOutputName].call(read_pointer, i, allocator.read_pointer, name_ptr)
104
- # freed in node_info
105
- typeinfo = ::FFI::MemoryPointer.new(:pointer)
106
- check_status api[:SessionGetOutputTypeInfo].call(read_pointer, i, typeinfo)
107
- @outputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
108
- allocator_free name_ptr
109
- end
61
+ @allocator = load_allocator
62
+ @inputs = load_inputs
63
+ @outputs = load_outputs
110
64
  ensure
111
65
  release :SessionOptions, session_options
112
66
  end
@@ -223,6 +177,64 @@ module OnnxRuntime
223
177
 
224
178
  private
225
179
 
180
+ def load_session(path_or_bytes, session_options)
181
+ session = ::FFI::MemoryPointer.new(:pointer)
182
+ from_memory =
183
+ if path_or_bytes.respond_to?(:read)
184
+ path_or_bytes = path_or_bytes.read
185
+ true
186
+ else
187
+ path_or_bytes = path_or_bytes.to_str
188
+ # TODO remove ability to load byte string directly in 0.8.0
189
+ path_or_bytes.encoding == Encoding::BINARY
190
+ end
191
+
192
+ if from_memory
193
+ check_status api[:CreateSessionFromArray].call(env.read_pointer, path_or_bytes, path_or_bytes.bytesize, session_options.read_pointer, session)
194
+ else
195
+ check_status api[:CreateSession].call(env.read_pointer, ort_string(path_or_bytes), session_options.read_pointer, session)
196
+ end
197
+ session
198
+ end
199
+
200
+ def load_allocator
201
+ allocator = ::FFI::MemoryPointer.new(:pointer)
202
+ check_status api[:GetAllocatorWithDefaultOptions].call(allocator)
203
+ allocator
204
+ end
205
+
206
+ def load_inputs
207
+ inputs = []
208
+ num_input_nodes = ::FFI::MemoryPointer.new(:size_t)
209
+ check_status api[:SessionGetInputCount].call(read_pointer, num_input_nodes)
210
+ num_input_nodes.read(:size_t).times do |i|
211
+ name_ptr = ::FFI::MemoryPointer.new(:string)
212
+ check_status api[:SessionGetInputName].call(read_pointer, i, @allocator.read_pointer, name_ptr)
213
+ # freed in node_info
214
+ typeinfo = ::FFI::MemoryPointer.new(:pointer)
215
+ check_status api[:SessionGetInputTypeInfo].call(read_pointer, i, typeinfo)
216
+ inputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
217
+ allocator_free name_ptr
218
+ end
219
+ inputs
220
+ end
221
+
222
+ def load_outputs
223
+ outputs = []
224
+ num_output_nodes = ::FFI::MemoryPointer.new(:size_t)
225
+ check_status api[:SessionGetOutputCount].call(read_pointer, num_output_nodes)
226
+ num_output_nodes.read(:size_t).times do |i|
227
+ name_ptr = ::FFI::MemoryPointer.new(:string)
228
+ check_status api[:SessionGetOutputName].call(read_pointer, i, @allocator.read_pointer, name_ptr)
229
+ # freed in node_info
230
+ typeinfo = ::FFI::MemoryPointer.new(:pointer)
231
+ check_status api[:SessionGetOutputTypeInfo].call(read_pointer, i, typeinfo)
232
+ outputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
233
+ allocator_free name_ptr
234
+ end
235
+ outputs
236
+ end
237
+
226
238
  def create_input_tensor(input_feed, refs)
227
239
  allocator_info = ::FFI::MemoryPointer.new(:pointer)
228
240
  check_status api[:CreateCpuMemoryInfo].call(1, 0, allocator_info)
@@ -325,7 +337,7 @@ module OnnxRuntime
325
337
  check_status api[:GetTensorMutableData].call(out_ptr, tensor_data)
326
338
 
327
339
  out_size = ::FFI::MemoryPointer.new(:size_t)
328
- output_tensor_size = api[:GetTensorShapeElementCount].call(typeinfo.read_pointer, out_size)
340
+ check_status api[:GetTensorShapeElementCount].call(typeinfo.read_pointer, out_size)
329
341
  output_tensor_size = out_size.read(:size_t)
330
342
 
331
343
  release :TensorTypeAndShapeInfo, typeinfo
@@ -1,3 +1,3 @@
1
1
  module OnnxRuntime
2
- VERSION = "0.7.3"
2
+ VERSION = "0.7.5"
3
3
  end