| @@ -111,9 +111,11 @@ namespace Tensorflow | |||||
| case "Double": | case "Double": | ||||
| full_values.Add(value.Data<double>()[0]); | full_values.Add(value.Data<double>()[0]); | ||||
| break; | break; | ||||
| case "String": | |||||
| full_values.Add(value.Data<string>()[0]); | |||||
| break; | |||||
| /*case "String": | |||||
| full_values.Add(value.Data<byte>()[0]); | |||||
| break;*/ | |||||
| default: | |||||
| throw new NotImplementedException($"build_results tensor_values[0] {tensor_values[0].dtype.Name}"); | |||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| @@ -296,9 +296,9 @@ namespace Tensorflow | |||||
| case "Double": | case "Double": | ||||
| tensor_proto.DoubleVal.AddRange(proto_values.Data<double>()); | tensor_proto.DoubleVal.AddRange(proto_values.Data<double>()); | ||||
| break; | break; | ||||
| case "String": | |||||
| /*case "String": | |||||
| tensor_proto.StringVal.AddRange(proto_values.Data<string>().Select(x => Google.Protobuf.ByteString.CopyFromUtf8(x.ToString()))); | tensor_proto.StringVal.AddRange(proto_values.Data<string>().Select(x => Google.Protobuf.ByteString.CopyFromUtf8(x.ToString()))); | ||||
| break; | |||||
| break;*/ | |||||
| default: | default: | ||||
| throw new Exception("make_tensor_proto Not Implemented"); | throw new Exception("make_tensor_proto Not Implemented"); | ||||
| } | } | ||||
| @@ -170,7 +170,7 @@ namespace Tensorflow | |||||
| { | { | ||||
| if (string.IsNullOrEmpty(latest_filename)) | if (string.IsNullOrEmpty(latest_filename)) | ||||
| latest_filename = "checkpoint"; | latest_filename = "checkpoint"; | ||||
| string model_checkpoint_path = ""; | |||||
| object model_checkpoint_path = ""; | |||||
| string checkpoint_file = ""; | string checkpoint_file = ""; | ||||
| if (global_step > 0) | if (global_step > 0) | ||||
| @@ -188,10 +188,10 @@ namespace Tensorflow | |||||
| if (write_state) | if (write_state) | ||||
| { | { | ||||
| _RecordLastCheckpoint(model_checkpoint_path); | |||||
| _RecordLastCheckpoint(model_checkpoint_path.ToString()); | |||||
| checkpoint_management.update_checkpoint_state_internal( | checkpoint_management.update_checkpoint_state_internal( | ||||
| save_dir: save_path_parent, | save_dir: save_path_parent, | ||||
| model_checkpoint_path: model_checkpoint_path, | |||||
| model_checkpoint_path: model_checkpoint_path.ToString(), | |||||
| all_model_checkpoint_paths: _last_checkpoints.Keys.Select(x => x).ToList(), | all_model_checkpoint_paths: _last_checkpoints.Keys.Select(x => x).ToList(), | ||||
| latest_filename: latest_filename, | latest_filename: latest_filename, | ||||
| save_relative_paths: _save_relative_paths); | save_relative_paths: _save_relative_paths); | ||||
| @@ -205,7 +205,7 @@ namespace Tensorflow | |||||
| export_meta_graph(meta_graph_filename, strip_default_attrs: strip_default_attrs, save_debug_info: save_debug_info); | export_meta_graph(meta_graph_filename, strip_default_attrs: strip_default_attrs, save_debug_info: save_debug_info); | ||||
| } | } | ||||
| return _is_empty ? string.Empty : model_checkpoint_path; | |||||
| return _is_empty ? string.Empty : model_checkpoint_path.ToString(); | |||||
| } | } | ||||
| public (Saver, object) import_meta_graph(string meta_graph_or_file, | public (Saver, object) import_meta_graph(string meta_graph_or_file, | ||||
| @@ -136,7 +136,7 @@ namespace TensorFlowNET.Examples.ImageProcess | |||||
| public void Train(Session sess) | public void Train(Session sess) | ||||
| { | { | ||||
| // Number of training iterations in each epoch | // Number of training iterations in each epoch | ||||
| var num_tr_iter = y_train.len / batch_size; | |||||
| var num_tr_iter = y_train.shape[0] / batch_size; | |||||
| var init = tf.global_variables_initializer(); | var init = tf.global_variables_initializer(); | ||||
| sess.run(init); | sess.run(init); | ||||
| @@ -127,7 +127,7 @@ namespace TensorFlowNET.Examples.ImageProcess | |||||
| public void Train(Session sess) | public void Train(Session sess) | ||||
| { | { | ||||
| // Number of training iterations in each epoch | // Number of training iterations in each epoch | ||||
| var num_tr_iter = mnist.train.labels.len / batch_size; | |||||
| var num_tr_iter = mnist.train.labels.shape[0] / batch_size; | |||||
| var init = tf.global_variables_initializer(); | var init = tf.global_variables_initializer(); | ||||
| sess.run(init); | sess.run(init); | ||||
| @@ -88,7 +88,7 @@ namespace TensorFlowNET.Examples.ImageProcess | |||||
| public void Train(Session sess) | public void Train(Session sess) | ||||
| { | { | ||||
| // Number of training iterations in each epoch | // Number of training iterations in each epoch | ||||
| var num_tr_iter = y_train.len / batch_size; | |||||
| var num_tr_iter = y_train.shape[0] / batch_size; | |||||
| var init = tf.global_variables_initializer(); | var init = tf.global_variables_initializer(); | ||||
| sess.run(init); | sess.run(init); | ||||
| @@ -77,7 +77,7 @@ namespace TensorFlowNET.Examples | |||||
| var results = sess.run(outTensorArr, new FeedItem(imgTensor, imgArr)); | var results = sess.run(outTensorArr, new FeedItem(imgTensor, imgArr)); | ||||
| NDArray[] resultArr = results.Data<NDArray>(); | |||||
| NDArray[] resultArr = results.GetNDArrays(); | |||||
| buildOutputImage(resultArr); | buildOutputImage(resultArr); | ||||
| } | } | ||||
| @@ -119,14 +119,14 @@ namespace TensorFlowNET.Examples | |||||
| // get bitmap | // get bitmap | ||||
| Bitmap bitmap = new Bitmap(Path.Join(imageDir, "input.jpg")); | Bitmap bitmap = new Bitmap(Path.Join(imageDir, "input.jpg")); | ||||
| float[] scores = resultArr[2].Data<float>(); | |||||
| float[] scores = resultArr[2].GetData<float>().ToArray(); | |||||
| for (int i=0; i<scores.Length; i++) | for (int i=0; i<scores.Length; i++) | ||||
| { | { | ||||
| float score = scores[i]; | float score = scores[i]; | ||||
| if (score > MIN_SCORE) | if (score > MIN_SCORE) | ||||
| { | { | ||||
| float[] boxes = resultArr[1].Data<float>(); | |||||
| float[] boxes = resultArr[1].GetData<float>().ToArray(); | |||||
| float top = boxes[i * 4] * bitmap.Height; | float top = boxes[i * 4] * bitmap.Height; | ||||
| float left = boxes[i * 4 + 1] * bitmap.Width; | float left = boxes[i * 4 + 1] * bitmap.Width; | ||||
| float bottom = boxes[i * 4 + 2] * bitmap.Height; | float bottom = boxes[i * 4 + 2] * bitmap.Height; | ||||
| @@ -140,7 +140,7 @@ namespace TensorFlowNET.Examples | |||||
| Height = (int)(bottom - top) | Height = (int)(bottom - top) | ||||
| }; | }; | ||||
| float[] ids = resultArr[3].Data<float>(); | |||||
| float[] ids = resultArr[3].GetData<float>().ToArray(); | |||||
| string name = pbTxtItems.items.Where(w => w.id == (int)ids[i]).Select(s=>s.display_name).FirstOrDefault(); | string name = pbTxtItems.items.Where(w => w.id == (int)ids[i]).Select(s=>s.display_name).FirstOrDefault(); | ||||
| @@ -27,7 +27,7 @@ namespace TensorFlowNET.Examples | |||||
| { | { | ||||
| PrepareData(); | PrepareData(); | ||||
| Console.WriteLine($"Training entries: {train_data.len}, labels: {train_labels.len}"); | |||||
| Console.WriteLine($"Training entries: {train_data.shape[0]}, labels: {train_labels.shape[0]}"); | |||||
| // A dictionary mapping words to an integer index | // A dictionary mapping words to an integer index | ||||
| var word_index = GetWordIndex(); | var word_index = GetWordIndex(); | ||||
| @@ -147,8 +147,8 @@ namespace TensorFlowNET.Examples | |||||
| Console.WriteLine("\tDONE "); | Console.WriteLine("\tDONE "); | ||||
| var (train_x, valid_x, train_y, valid_y) = train_test_split(x, y, test_size: 0.15f); | var (train_x, valid_x, train_y, valid_y) = train_test_split(x, y, test_size: 0.15f); | ||||
| Console.WriteLine("Training set size: " + train_x.len); | |||||
| Console.WriteLine("Test set size: " + valid_x.len); | |||||
| Console.WriteLine("Training set size: " + train_x.shape[0]); | |||||
| Console.WriteLine("Test set size: " + valid_x.shape[0]); | |||||
| } | } | ||||
| public Graph ImportGraph() | public Graph ImportGraph() | ||||
| @@ -120,7 +120,7 @@ namespace TensorFlowNET.Examples | |||||
| // Generate training batch for the skip-gram model | // Generate training batch for the skip-gram model | ||||
| private (NDArray, NDArray) next_batch(int batch_size, int num_skips, int skip_window) | private (NDArray, NDArray) next_batch(int batch_size, int num_skips, int skip_window) | ||||
| { | { | ||||
| var batch = np.ndarray((batch_size), dtype: np.int32); | |||||
| var batch = np.ndarray(new Shape(batch_size), dtype: np.int32); | |||||
| var labels = np.ndarray((batch_size, 1), dtype: np.int32); | var labels = np.ndarray((batch_size, 1), dtype: np.int32); | ||||
| // get window size (words left and right + current one) | // get window size (words left and right + current one) | ||||
| int span = 2 * skip_window + 1; | int span = 2 * skip_window + 1; | ||||