/// </summary>
/// <remarks>
/// Use this function to create neural network layer.
- /// If the function succeeds, layer must be released using Disposed(), if not added to a model.
+ /// If the function succeeds, layer must be released using Dispose(), if not added to a model.
/// If added to a model by AddLayer method of Model, layer is available until the model is released. so
- /// Disposed() must never be used.
+ /// Dispose() must never be used.
/// </remarks>
/// <since_tizen> 10 </since_tizen>
public class Layer: IDisposable
private bool disposed = false;
/// if true, model will be destroy layer handle
- private bool notDestroy = false;
+ private bool hasOwnership = false;
/// <summary>
/// Creates a neural network layer.
Log.Info(NNTrainer.Tag, $"Create layer with type:{type}");
}
- internal Layer(bool createdByModel)
+ internal Layer(IntPtr handle, bool hasOwnership)
{
- notDestroy = createdByModel;
+ this.handle = handle;
+ this.hasOwnership = hasOwnership;
}
/// <summary>
// release managed object
}
// release unmanaged object
- if (handle != IntPtr.Zero && !notDestroy)
+ if (handle != IntPtr.Zero && !hasOwnership)
{
// Destroy the neural network layer.
NNTrainerError ret = Interop.Layer.Destroy(handle);
{
return handle;
}
-
- internal void SetHandle(IntPtr layerHandle)
- {
- handle = layerHandle;
- }
}
}
/// The returned layer must not be deleted as it is owned by the model.
/// layerName can be set by SetProperty method of Layer.
/// Returned layer instance is different with same layerName, but the
- /// Internal native layer handle is same.
+ /// Internally native layer handle is same.
/// </remarks>
/// <param name="layerName"> Name of the already created layer.</param>
/// <returns>layer instance</returns>
NNTrainerError ret = Interop.Model.GetLayer(handle, layerName, out layerHandle);
NNTrainer.CheckException(ret, "Failed to get layer");
- Layer layer = new Layer(true);
- layer.SetHandle(layerHandle);
-
+ Layer layer = new Layer(layerHandle, true);
+
return layer;
}