def convert_lambda(layer): if layer.function == modellib.lambda_a: params = NeuralNetwork_pb2.CustomLayerParams() params.className = 'lambda_a' elif layer.function == modellib.lambda_b: params = NeuralNetwork_pb2.CustomLayerParams() params.className = 'lambda_b' elif layer.function == modellib.lambda_c: params = NeuralNetwork_pb2.CustomLayerParams() params.className = 'lambda_c' elif layer.function == modellib.lambda_d: params = NeuralNetwork_pb2.CustomLayerParams() params.className = 'lambda_d' else: params = None return params
def convert_lambda(layer): if layer.function == scaling: params = NeuralNetwork_pb2.CustomLayerParams() params.className = "scaling" params.parameters["scale"].doubleValue = layer.arguments['scale'] return params else: return None
def convert_coreml(layer): params = NeuralNetwork_pb2.CustomLayerParams() params.className = 'ResizeLayer' params.description = 'Perform nearest neighbour / bilinear resizing of input tensors' layer_config = layer.get_config() params.parameters['bilinear'].intValue = int(layer_config['bilinear']) params.parameters['new_height'].intValue = layer_config['new_height'] params.parameters['new_width'].intValue = layer_config['new_width'] return params
def convert_FullSizePReLU(keras_layer): coreml_layer = NeuralNetwork_pb2.CustomLayerParams() coreml_layer.className = className_FullSizePReLU coreml_layer.description = 'Custom activation layer: ' + className_FullSizePReLU weightList = keras_layer.get_weights() p_alpha = weightList[0] # numpy array alpha = coreml_layer.weights.add() alpha.floatValue.extend(map(float, p_alpha.flatten())) return coreml_layer
def convert_swish(layer): params = NeuralNetwork_pb2.CustomLayerParams() # The name of the Swift or Obj-C class that implements this layer. params.className = "Swish" # The desciption is shown in Xcode's mlmodel viewer. params.description = "A fancy new activation function" # Set configuration parameters params.parameters["beta"].doubleValue = layer.beta return params
def convert_learnable_swish(layer): params = NeuralNetwork_pb2.CustomLayerParams() # The name of the Swift or Obj-C class that implements this layer. params.className = "Swish" # The desciption is shown in Xcode's mlmodel viewer. params.description = "A fancy new activation function" # Add the weights beta_weights = params.weights.add() beta_weights.floatValue.extend(layer.get_weights()[0].astype(float)) return params
def convert_SynapticTransmissionRegulator(keras_layer): coreml_layer = NeuralNetwork_pb2.CustomLayerParams() coreml_layer.className = className_SynapticTransmissionRegulator coreml_layer.description = 'Custom Synaptic Transmission Regulator (STR) layer: ' + className_SynapticTransmissionRegulator weightList = keras_layer.get_weights() p_weight = weightList[0] # numpy array p_bias = weightList[1] # numpy array weight = coreml_layer.weights.add() weight.floatValue.extend(map(float, p_weight.flatten())) bias = coreml_layer.weights.add() bias.floatValue.extend(map(float, p_bias.flatten())) return coreml_layer