我们从Python开源项目中,提取了以下7个代码示例,用于说明如何使用keras.backend._backend()。
def init_segmenter(args_segmenter_model): global segmenter_model, rings, sectors, points_per_ring, is_ped, tf_segmenter_graph segmenter_model = load_model(args_segmenter_model, compile=False) segmenter_model._make_predict_function() # https://github.com/fchollet/keras/issues/6124 print("Loading segmenter model " + args_segmenter_model) segmenter_model.summary() points_per_ring = segmenter_model.get_input_shape_at(0)[0][1] match = re.search(r'lidarnet-(car|ped)-.*seg-rings_(\d+)_(\d+)-sectors_(\d+)-.*\.hdf5', args_segmenter_model) is_ped = match.group(1) == 'ped' rings = range(int(match.group(2)), int(match.group(3))) sectors = int(match.group(4)) points_per_ring *= sectors assert len(rings) == segmenter_model.get_input_shape_at(0)[0][2] print('Loaded segmenter model with ' + str(points_per_ring) + ' points per ring and ' + str(len(rings)) + ' rings from ' + str(rings[0]) + ' to ' + str(rings[-1]) ) if K._backend == 'tensorflow': tf_segmenter_graph = tf.get_default_graph() print(tf_segmenter_graph) return
def init_localizer(args_localizer_model): global localizer_model, pointnet_points, tf_localizer_graph print("Loading localizer model " + args_localizer_model) localizer_model = load_model(args_localizer_model, compile=False) localizer_model._make_predict_function() # https://github.com/fchollet/keras/issues/6124 localizer_model.summary() # TODO: check consistency against segmenter model (rings) pointnet_points = localizer_model.get_input_shape_at(0)[0][1] print('Loaded localizer model with ' + str(pointnet_points) + ' points') if K._backend == 'tensorflow': tf_localizer_graph = tf.get_default_graph() print(tf_localizer_graph) return
def call(self, x, mask=None): stride_row, stride_col = self.subsample nb_filter,_,_,_ = self.W_shape if self.dim_ordering == 'th': if K._backend == 'theano': x = x.reshape([x.shape[0],1,x.shape[1],x.shape[2],x.shape[3]]) # x has shape (batchsize,1,input_nbfilter,input_rows,input_cols) W = K.repeat_elements(self.W, self.shared_pool[0], axis=2) W = K.repeat_elements(W, self.shared_pool[1], axis=3) # W has shape (nb_filter , input_nbfilter,input_rows,input_cols) output = K.sum(x*W,axis = 2) # uses broadcasting, sums over input filters else: raise Exception('Invalid dim_ordering: ' + self.dim_ordering) if self.bias: if self.dim_ordering == 'th': b = K.repeat_elements(self.b, self.shared_pool[0], axis=1) b = K.repeat_elements(b, self.shared_pool[1], axis=2) output += K.reshape(b, (1, nb_filter, self.output_row, self.output_col)) elif self.dim_ordering == 'tf': output += K.reshape(self.b, (1, self.output_row, self.output_col, nb_filter)) else: raise Exception('Invalid dim_ordering: ' + self.dim_ordering) output = self.activation(output) return output
def call(self, x, mask=None): stride_row, stride_col = self.subsample nb_filter,_,_,_ = self.W_shape if self.dim_ordering == 'th': if K._backend == 'theano': x = x.reshape([x.shape[0],1,x.shape[1],x.shape[2],x.shape[3]]) # x has shape (batchsize,1,input_nbfilter,input_rows,input_cols) # W has shape (nb_filter , input_nbfilter,input_rows,input_cols) output = K.sum(x*self.W,axis = 2) # uses broadcasting, sums over input filters if stride_row>1 or stride_col >1: # sum pooling isn't working -> avg pooling multiplied by number of elements/pool output = (stride_row*stride_col)*K.pool2d(output,(stride_row, stride_col),(stride_row, stride_col),pool_mode = 'avg') else: raise Exception('Invalid dim_ordering: ' + self.dim_ordering) if self.bias: if self.dim_ordering == 'th': output += K.reshape(self.b, (1, nb_filter, self.output_row, self.output_col)) elif self.dim_ordering == 'tf': output += K.reshape(self.b, (1, self.output_row, self.output_col, nb_filter)) else: raise Exception('Invalid dim_ordering: ' + self.dim_ordering) output = self.activation(output) return output
def call(self, x, mask=None): stride_row, stride_col = self.subsample _, feature_dim, nb_filter = self.W_shape if self.dim_ordering == 'th': if K._backend == 'theano': output = [] for i in range(self.output_row): for j in range(self.output_col): slice_row = slice(i * stride_row, i * stride_row + self.nb_row) slice_col = slice(j * stride_col, j * stride_col + self.nb_col) x_flatten = K.reshape(x[:, :, slice_row, slice_col], (1, -1, feature_dim)) output.append(K.dot(x_flatten, self.W[i * self.output_col + j, :, :])) output = K.concatenate(output, axis=0) else: xs = [] for i in range(self.output_row): for j in range(self.output_col): slice_row = slice(i * stride_row, i * stride_row + self.nb_row) slice_col = slice(j * stride_col, j * stride_col + self.nb_col) xs.append(K.reshape(x[:, :, slice_row, slice_col], (1, -1, feature_dim))) x_aggregate = K.concatenate(xs, axis=0) output = K.batch_dot(x_aggregate, self.W) output = K.reshape(output, (self.output_row, self.output_col, -1, nb_filter)) output = K.permute_dimensions(output, (2, 3, 0, 1)) elif self.dim_ordering == 'tf': xs = [] for i in range(self.output_row): for j in range(self.output_col): slice_row = slice(i * stride_row, i * stride_row + self.nb_row) slice_col = slice(j * stride_col, j * stride_col + self.nb_col) xs.append(K.reshape(x[:, slice_row, slice_col, :], (1, -1, feature_dim))) x_aggregate = K.concatenate(xs, axis=0) output = K.batch_dot(x_aggregate, self.W) output = K.reshape(output, (self.output_row, self.output_col, -1, nb_filter)) output = K.permute_dimensions(output, (2, 0, 1, 3)) else: raise Exception('Invalid dim_ordering: ' + self.dim_ordering) if self.bias: if self.dim_ordering == 'th': output += K.reshape(self.b, (1, nb_filter, self.output_row, self.output_col)) elif self.dim_ordering == 'tf': output += K.reshape(self.b, (1, self.output_row, self.output_col, nb_filter)) else: raise Exception('Invalid dim_ordering: ' + self.dim_ordering) output = self.activation(output) return output
def call(self, x, mask=None): stride_row, stride_col = self.subsample _, feature_dim, nb_filter = self.W_shape if self.dim_ordering == 'th': if K._backend == 'theano': output = [] for i in range(self.output_row): for j in range(self.output_col): slice_row = slice(i * stride_row, i * stride_row + self.nb_row) slice_col = slice(j * stride_col, j * stride_col + self.nb_col) x_flatten = K.reshape(x[:, :, slice_row, slice_col], (1, -1, feature_dim)) output.append(K.dot(x_flatten, self.W[i * self.output_col + j, :, :])) output = K.concatenate(output, axis=0) else: xs = [] for i in range(self.output_row): for j in range(self.output_col): slice_row = slice(i * stride_row, i * stride_row + self.nb_row) slice_col = slice(j * stride_col, j * stride_col + self.nb_col) xs.append(K.reshape(x[:, :, slice_row, slice_col], (1, -1, feature_dim))) x_aggregate = K.concatenate(xs, axis=0) output = K.batch_dot(x_aggregate, self.W) output = K.reshape(output, (self.output_row, self.output_col, -1, nb_filter)) output = K.permute_dimensions(output, (2, 3, 0, 1)) elif self.dim_ordering == 'tf': xs = [] for i in range(self.output_row): for j in range(self.output_col): slice_row = slice(i * stride_row, i * stride_row + self.nb_row) slice_col = slice(j * stride_col, j * stride_col + self.nb_col) xs.append(K.reshape(x[:, slice_row, slice_col, :], (1, -1, feature_dim))) x_aggregate = K.concatenate(xs, axis=0) output = K.batch_dot(x_aggregate, self.W) output = K.reshape(output, (self.output_row, self.output_col, -1, nb_filter)) output = K.permute_dimensions(output, (2, 0, 1, 3)) else: raise ValueError('Invalid dim_ordering:', self.dim_ordering) if self.bias: if self.dim_ordering == 'th': output += K.reshape(self.b, (1, nb_filter, self.output_row, self.output_col)) elif self.dim_ordering == 'tf': output += K.reshape(self.b, (1, self.output_row, self.output_col, nb_filter)) output = self.activation(output) return output