def __init__( self, net_params, batch_size, num_features, num_classes, prediction_window, seq_len, seed, ): _utils.suppress_tensorflow_warnings() self.gpu_policy = _utils.TensorFlowGPUPolicy() self.gpu_policy.start() for key in net_params.keys(): net_params[key] = _utils.convert_shared_float_array_to_numpy( net_params[key] ) self.ac_graph = _tf.Graph() self.num_classes = num_classes self.batch_size = batch_size self.seq_len = seq_len self.sess = _tf.Session(graph=self.ac_graph) with self.ac_graph.as_default(): self.init_activity_classifier_graph( net_params, num_features, prediction_window, seed )
def _lazy_import_tensorflow(): # Suppresses verbosity to only errors _utils.suppress_tensorflow_warnings() _tf = _minimal_package_import_check("tensorflow.compat.v1") # This toolkit is compatible with TensorFlow V2 behavior. # However, until all toolkits are compatible, we must call `disable_v2_behavior()`. _tf.disable_v2_behavior() return _tf
def __init__(self, ptModel): """ Parameters ---------- ptModel: ImageClassifierPreTrainedModel An instance of a pre-trained model. """ from tensorflow import keras # Suppresses verbosity to only errors _utils.suppress_tensorflow_warnings() self.ptModel = ptModel self.input_shape = ptModel.input_image_shape self.coreml_data_layer = ptModel.coreml_data_layer self.coreml_feature_layer = ptModel.coreml_feature_layer model_path = ptModel.get_model_path('tensorflow') self.model = keras.models.load_model(model_path)
def __init__(self, ptModel): """ Parameters ---------- ptModel: ImageClassifierPreTrainedModel An instance of a pre-trained model. """ # Suppresses verbosity to only errors _utils.suppress_tensorflow_warnings() keras = _minimal_package_import_check("tensorflow.keras") self.gpu_policy = _utils.TensorFlowGPUPolicy() self.gpu_policy.start() self.ptModel = ptModel self.input_shape = ptModel.input_image_shape self.coreml_data_layer = ptModel.coreml_data_layer self.coreml_feature_layer = ptModel.coreml_feature_layer model_path = ptModel.get_model_path("tensorflow") self.model = keras.models.load_model(model_path)
# Copyright © 2019 Apple Inc. All rights reserved. # # Use of this source code is governed by a BSD-3-clause license that can # be found in the LICENSE.txt file or at https://opensource.org/licenses/BSD-3-Clause from __future__ import print_function as _ from __future__ import division as _ from __future__ import absolute_import as _ import numpy as _np from .._tf_model import TensorFlowModel import turicreate.toolkits._tf_utils as _utils import tensorflow.compat.v1 as _tf _tf.disable_v2_behavior() # Suppresses verbosity to only errors _utils.suppress_tensorflow_warnings() class ODTensorFlowModel(TensorFlowModel): def __init__(self, input_h, input_w, batch_size, output_size, init_weights, config, is_train=True): #reset tensorflow graph when a new model is created _tf.reset_default_graph() # Converting incoming weights from shared_float_array to numpy for key in init_weights.keys(): init_weights[key] = _utils.convert_shared_float_array_to_numpy(init_weights[key]) self.config = config self.batch_size = batch_size self.grid_shape = [13,13]
def __init__( self, net_params, batch_size, num_features, num_classes, prediction_window, seq_len, seed, ): _utils.suppress_tensorflow_warnings() self.num_classes = num_classes self.batch_size = batch_size tf = _lazy_import_tensorflow() keras = tf.keras ############################################# # Define the Neural Network ############################################# inputs = keras.Input(shape=(prediction_window * seq_len, num_features)) # First dense layer dense = keras.layers.Conv1D( filters=CONV_H, kernel_size=(prediction_window), padding='same', strides=prediction_window, use_bias=True, activation='relu', ) cur_outputs = dense(inputs) # First dropout layer dropout = keras.layers.Dropout( rate=0.2, seed=seed, ) cur_outputs = dropout(cur_outputs) # LSTM layer lstm = keras.layers.LSTM( units=LSTM_H, return_sequences=True, use_bias=True, ) cur_outputs = lstm(cur_outputs) # Second dense layer dense2 = keras.layers.Dense(DENSE_H) cur_outputs = dense2(cur_outputs) # Batch norm layer batch_norm = keras.layers.BatchNormalization() cur_outputs = batch_norm(cur_outputs) # ReLU layer relu = keras.layers.ReLU() cur_outputs = relu(cur_outputs) # Final dropout layer dropout = keras.layers.Dropout(rate=0.5, seed=seed) cur_outputs = dropout(cur_outputs) # Final dense layer dense3 = keras.layers.Dense(num_classes, use_bias=False) cur_outputs = dense3(cur_outputs) # Softmax layer softmax = keras.layers.Softmax() cur_outputs = softmax(cur_outputs) self.model = keras.Model(inputs=inputs, outputs=cur_outputs) self.model.compile(loss=tf.losses.categorical_crossentropy, optimizer=keras.optimizers.Adam(learning_rate=1e-3), sample_weight_mode="temporal") ############################################# # Load the Weights of the Neural Network ############################################# for key in net_params.keys(): net_params[key] = _utils.convert_shared_float_array_to_numpy( net_params[key]) # Set weight for first dense layer l = self.model.layers[1] l.set_weights( (_utils.convert_conv1d_coreml_to_tf(net_params["conv_weight"]), net_params["conv_bias"])) # Set LSTM weights i2h, h2h, bias = [], [], [] for i in ('i', 'f', 'c', 'o'): i2h.append(eval('net_params["lstm_i2h_%s_weight"]' % i)) h2h.append(eval('net_params["lstm_h2h_%s_weight"]' % i)) bias.append(eval('net_params["lstm_h2h_%s_bias"]' % i)) i2h = _np.concatenate(i2h, axis=0) h2h = _np.concatenate(h2h, axis=0) bias = _np.concatenate(bias, axis=0) i2h = _np.swapaxes(i2h, 1, 0) h2h = _np.swapaxes(h2h, 1, 0) l = self.model.layers[3] l.set_weights((i2h, h2h, bias)) # Set weight for second dense layer l = self.model.layers[4] l.set_weights( (net_params['dense0_weight'].reshape(DENSE_H, LSTM_H).swapaxes(0, 1), net_params['dense0_bias'])) # Set batch Norm weights l = self.model.layers[5] l.set_weights( (net_params['bn_gamma'], net_params['bn_beta'], net_params['bn_running_mean'], net_params['bn_running_var'])) # Set weights for last dense layer l = self.model.layers[8] l.set_weights((net_params['dense1_weight'].reshape( (self.num_classes, DENSE_H)).swapaxes(0, 1), ))
def _lazy_import_tensorflow(): # Suppresses verbosity to only errors _utils.suppress_tensorflow_warnings() _tf = _minimal_package_import_check("tensorflow.compat.v1") return _tf