Python keras.backend 模块,_backend() 实例源码
我们从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_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, axis=1)
b = K.repeat_elements(b, 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, self.output_col, nb_filter))
else:
raise Exception('Invalid dim_ordering: ' + self.dim_ordering)
output = self.activation(output)
return output
def call(self,input_cols)
# W has shape (nb_filter,input_cols)
output = K.sum(x*self.W,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),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, nb_filter))
else:
raise Exception('Invalid dim_ordering: ' + self.dim_ordering)
output = self.activation(output)
return output
def call(self, 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, 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,
j * stride_col + self.nb_col)
xs.append(K.reshape(x[:, feature_dim)))
x_aggregate = K.concatenate(xs, axis=0)
output = K.batch_dot(x_aggregate, self.W)
output = K.reshape(output, (self.output_row, 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_col, :], feature_dim)))
x_aggregate = K.concatenate(xs, axis=0)
output = K.batch_dot(x_aggregate, 1, 3))
else:
raise Exception('Invalid dim_ordering: ' + self.dim_ordering)
if self.bias:
if self.dim_ordering == 'th':
output += K.reshape(self.b, nb_filter))
else:
raise Exception('Invalid dim_ordering: ' + self.dim_ordering)
output = self.activation(output)
return output
def call(self, 3))
else:
raise ValueError('Invalid dim_ordering:', self.dim_ordering)
if self.bias:
if self.dim_ordering == 'th':
output += K.reshape(self.b, nb_filter))
output = self.activation(output)
return output
def call(self, nb_filter))
else:
raise Exception('Invalid dim_ordering: ' + self.dim_ordering)
output = self.activation(output)
return output
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。