Keras.NET
Keras.NET copied to clipboard
load hdf5 model
I have issue loading a keras hdf5 model into keras.net (issue is from customobject)
python code:
from keras.models import load_model
import keras.backend as K
def angle_error(y_true, y_pred):
diff = angle_difference(K.argmax(y_true), K.argmax(y_pred))
return K.mean(K.cast(K.abs(diff), K.floatx()))
def angle_difference(x, y):
return 180 - abs(abs(x - y) - 180)
model_location = os.path.join('models', 'img_resnet50.hdf5')
model = load_model(model_location, custom_objects={'angle_error': angle_error})
c# code
string func = @"
import keras.backend as K
def angle_error(y_true, y_pred):
diff = angle_difference(K.argmax(y_true), K.argmax(y_pred))
return K.mean(K.cast(K.abs(diff), K.floatx()))
def angle_difference(x, y):
return 180 - abs(abs(x - y) - 180)
";
var module = PythonEngine.ImportModule(func); //AccessViolation
Dictionary<string, PyObject> customObjects = new Dictionary<string, PyObject>();
customObjects.Add("angle_error", module);
var model = BaseModel.LoadModel(modelSimpleFilePath, customObjects);
string img_path = "test1.png";
var img = ImageUtil.LoadImg(img_path);
var x = ImageUtil.ImageToArray(img);
x = np.expand_dims(x, axis: 0);
x = ImageUtil.PreprocessInput(x);
var preds = model.Predict(x);
var predictions = ImageUtil.DecodePredictions(preds, top: 2);
foreach (ImageNetPrediction item in predictions)
{
Console.WriteLine("Name: {0}, Acc: {1}", item.Word, item.PredictedValue);
}