def rargmax(vector):
# random argmax
m = np.max(vector)
indices = np.nonzero(vector == m)[0]
return pr.choice(indices)
# Reward Update Q
# Algorithm
# For each s,a initialize table entry Q(s,a)<-0
# Observe current stat s
# Do foever:
# select an action a and execute it
# receive immediate reward
# observe the new state
# update the table entry for Q(s,a)
# update the state
python类nonzero()的实例源码
def mg(x, xmf, umf=[0, 1, 1, 0]):
"""Function to compute the membership grades of each x on a T1 FS
x: list of x values
xmf: x parameters of the membership function
umf: u parameters of the membership function
"""
items = [item for item in sorted(zip(xmf, umf))]
xmf = [i[0] for i in items]
umf = [i[1] for i in items]
u = [None] * len(x) # membership grade of x
for i, p in enumerate(x):
if p <= xmf[0] or p >= xmf[-1]:
u[i] = 0
else:
x_mf = np.array(xmf)
left = np.nonzero(x_mf < p)[0][-1]
right = left + 1
u[i] = umf[left] + (umf[right] - umf[left]) * (p - xmf[left]) / (xmf[right] - xmf[left])
return u
def ber(x, y, m=2):
"""Measure bit error rate between symbols in x and y.
:param x: symbol array #1
:param y: symbol array #2
:param m: symbol alphabet size (maximum 64)
:returns: bit error rate
>>> import arlpy
>>> arlpy.comms.ber([0,1,2,3], [0,1,2,2], m=4)
0.125
"""
x = _np.asarray(x, dtype=_np.int)
y = _np.asarray(y, dtype=_np.int)
if _np.any(x >= m) or _np.any(y >= m) or _np.any(x < 0) or _np.any(y < 0):
raise ValueError('Invalid data for specified m')
if m == 2:
return ser(x, y)
if m > _MAX_M:
raise ValueError('m > %d not supported' % (_MAX_M))
n = _np.product(_np.shape(x))*_np.log2(m)
e = x^y
e = e[_np.nonzero(e)]
e = _np.sum(_popcount[e])
return float(e)/n
def flip_axes(data, perms, flips):
""" Flip a data array along specified axes
Parameters
----------
data : 3D array
perms : (3,) sequence of ints
Axis permutations to perform
flips : (3,) sequence of bools
Sequence of indicators for whether to flip along each axis
Returns
-------
3D array
"""
data = np.transpose(data, perms)
for axis in np.nonzero(flips)[0]:
data = nb.orientations.flip_axis(data, axis)
return data
def draw_links(self,n=1,log_sampling=False):
""" Draw multiple random links. """
urls = []
domain_array = np.array([dmn for dmn in self.domain_links])
domain_count = np.array([len(self.domain_links[domain_array[k]]) for k in range(domain_array.shape[0])])
p = np.array([np.float(c) for c in domain_count])
count_total = p.sum()
if log_sampling: # log-sampling [log(x+1)] to bias lower count domains
p = np.fromiter((np.log1p(x) for x in p), dtype=p.dtype)
if count_total > 0:
p = p/p.sum()
cnts = npr.multinomial(n, pvals=p)
if n > 1:
for k in range(cnts.shape[0]):
domain = domain_array[k]
cnt = min(cnts[k],domain_count[k])
for url in random.sample(self.domain_links[domain],cnt):
urls.append(url)
else:
k = int(np.nonzero(cnts)[0])
domain = domain_array[k]
url = random.sample(self.domain_links[domain],1)[0]
urls.append(url)
return urls
def _get_features(self, item, user_id):
'''Change a tuple (item_id, rating) into a list of features to feed into the RNN
features have the following structure: [one_hot_encoding, personal_rating on a scale of ten, average_rating on a scale of ten, popularity on a log scale of ten]
'''
item_id, rating = item
if self.use_movies_features:
one_hot_encoding = np.zeros(self.n_items)
one_hot_encoding[item_id] = 1
return np.concatenate((one_hot_encoding, self._get_optional_features(item, user_id)))
else:
one_hot_encoding = [item_id]
optional_features = self._get_optional_features(item, user_id)
optional_features_ids = np.nonzero(optional_features)[0]
return np.concatenate((one_hot_encoding, optional_features_ids + self.n_items))
def _sample_discrete_actions(batch_probs):
"""Sample a batch of actions from a batch of action probabilities.
Args:
batch_probs (ndarray): batch of action probabilities BxA
Returns:
List consisting of sampled actions
"""
action_indices = []
# Subtract a tiny value from probabilities in order to avoid
# "ValueError: sum(pvals[:-1]) > 1.0" in numpy.multinomial
batch_probs = batch_probs - np.finfo(np.float32).epsneg
for i in range(batch_probs.shape[0]):
histogram = np.random.multinomial(1, batch_probs[i])
action_indices.append(int(np.nonzero(histogram)[0]))
return action_indices
def get_major_minor_axis(img):
"""
Finds the major and minor axis as 3d vectors of the passed in image
:param img: CZYX numpy array
:return: tuple containing two numpy arrays representing the major and minor axis as 3d vectors
"""
# do a mean projection if more than 3 axes
if img.ndim > 3:
z, y, x = np.nonzero(np.mean(img, axis=tuple(range(img.ndim - 3))))
else:
z, y, x = np.nonzero(img)
coords = np.stack([x - np.mean(x), y - np.mean(y), z - np.mean(z)])
# eigenvectors and values of the covariance matrix
evals, evecs = np.linalg.eig(np.cov(coords))
# return largest and smallest eigenvectors (major and minor axis)
order = np.argsort(evals)
return (evecs[:, order[-1]], evecs[:, order[0]])
def multilabel_to_multiclass (array):
array = binarization (array)
return np.array([np.nonzero(array[i,:])[0][0] for i in range (len(array))])
def tp_filter(X, Y, feat_num=1000, verbose=True):
''' TP feature selection in the spirit of the winners of the KDD cup 2001
Only for binary classification and sparse matrices'''
if issparse(X) and len(Y.shape)==1 and len(set(Y))==2 and (sum(Y)/Y.shape[0])<0.1:
if verbose: print("========= Filtering features...")
Posidx=Y>0
#npos = sum(Posidx)
#Negidx=Y<=0
#nneg = sum(Negidx)
nz=X.nonzero()
mx=X[nz].max()
if X[nz].min()==mx: # sparse binary
if mx!=1: X[nz]=1
tp=csr_matrix.sum(X[Posidx,:], axis=0)
#fn=npos-tp
#fp=csr_matrix.sum(X[Negidx,:], axis=0)
#tn=nneg-fp
else:
tp=np.sum(X[Posidx,:]>0, axis=0)
#tn=np.sum(X[Negidx,:]<=0, axis=0)
#fn=np.sum(X[Posidx,:]<=0, axis=0)
#fp=np.sum(X[Negidx,:]>0, axis=0)
tp=np.ravel(tp)
idx=sorted(range(len(tp)), key=tp.__getitem__, reverse=True)
return idx[0:feat_num]
else:
feat_num = X.shape[1]
return range(feat_num)
def callback_lasso(self, verts):
p = mpl.path.Path(verts)
in_selection = p.contains_points(self.lasso_selector.points)
indices = np.nonzero(in_selection)[0]
if len(self.lasso_selector.points) != len(self.points[1]):
self.update_inspect(indices, self.lasso_selector.add_or_remove)
else:
self.update_inspect_template(indices, self.lasso_selector.add_or_remove)
def callback_rect(self, eclick, erelease):
xmin, xmax, ymin, ymax = eclick.xdata, erelease.xdata, eclick.ydata, erelease.ydata
if xmin > xmax:
xmin, xmax = xmax, xmin
if ymin > ymax:
ymin, ymax = ymax, ymin
self.score_ax = eclick.inaxes
if self.score_ax == self.score_ax1:
score_x, score_y = self.score_x, self.score_y
elif self.score_ax == self.score_ax2:
score_x, score_y = self.norms[self.to_consider], self.rates[self.to_consider]
elif self.score_ax == self.score_ax3:
score_x, score_y = self.score_z, self.score_y
in_selection = ((score_x >= xmin) &
(score_x <= xmax) &
(score_y >= ymin) &
(score_y <= ymax))
indices = np.nonzero(in_selection)[0]
add_or_remove = None
if erelease.key == 'shift':
add_or_remove = 'add'
elif erelease.key == 'control':
add_or_remove = 'remove'
if self.score_ax != self.score_ax2:
self.update_inspect(indices, add_or_remove)
else:
self.update_inspect_template(indices, add_or_remove)
def callback_lasso(self, verts):
p = mpl.path.Path(verts)
in_selection = p.contains_points(self.lasso_selector.points)
indices = np.nonzero(in_selection)[0]
self.update_inspect(indices, self.lasso_selector.add_or_remove)
def filter_prediction(self, boxes, probs, cls_idx):
"""Filter bounding box predictions with probability threshold and
non-maximum supression.
Args:
boxes: array of [cx, cy, w, h].
probs: array of probabilities
cls_idx: array of class indices
Returns:
final_boxes: array of filtered bounding boxes.
final_probs: array of filtered probabilities
final_cls_idx: array of filtered class indices
"""
mc = self.mc
if mc.TOP_N_DETECTION < len(probs) and mc.TOP_N_DETECTION > 0:
order = probs.argsort()[:-mc.TOP_N_DETECTION-1:-1]
probs = probs[order]
boxes = boxes[order]
cls_idx = cls_idx[order]
else:
filtered_idx = np.nonzero(probs>mc.PROB_THRESH)[0]
probs = probs[filtered_idx]
boxes = boxes[filtered_idx]
cls_idx = cls_idx[filtered_idx]
final_boxes = []
final_probs = []
final_cls_idx = []
for c in range(mc.CLASSES):
idx_per_class = [i for i in range(len(probs)) if cls_idx[i] == c]
keep = util.nms(boxes[idx_per_class], probs[idx_per_class], mc.NMS_THRESH)
for i in range(len(keep)):
if keep[i]:
final_boxes.append(boxes[idx_per_class[i]])
final_probs.append(probs[idx_per_class[i]])
final_cls_idx.append(c)
return final_boxes, final_probs, final_cls_idx
def write_to_record(id_batch, label_batch, predictions, filenum, num_examples_processed):
writer = tf.python_io.TFRecordWriter(FLAGS.output_dir + '/' + 'predictions-%03d.tfrecord' % filenum)
for i in range(num_examples_processed):
video_id = id_batch[i]
label = np.nonzero(label_batch[i,:])[0]
example = get_output_feature(video_id, label, [predictions[i,:]], ['predictions'])
serialized = example.SerializeToString()
writer.write(serialized)
writer.close()
def write_to_record(id_batch, label_batch, input_batch, predictions, filenum, num_examples_processed):
writer = tf.python_io.TFRecordWriter(FLAGS.output_dir + '/' + 'predictions-%03d.tfrecord' % filenum)
for i in range(num_examples_processed):
video_id = id_batch[i]
label = np.nonzero(label_batch[i,:])[0]
example = get_output_feature(video_id, label, [predictions[i,:]], ['predictions'])
serialized = example.SerializeToString()
writer.write(serialized)
writer.close()
def write_to_record(id_batch, label_batch, predictions, filenum, num_examples_processed):
writer = tf.python_io.TFRecordWriter(FLAGS.output_dir + '/' + 'predictions-%04d.tfrecord' % filenum)
for i in range(num_examples_processed):
video_id = id_batch[i]
label = np.nonzero(label_batch[i,:])[0]
example = get_output_feature(video_id, label, [predictions[i,:]], ['predictions'])
serialized = example.SerializeToString()
writer.write(serialized)
writer.close()
inference-pre-ensemble-with-predictions.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 38
收藏 0
点赞 0
评论 0
def write_to_record(id_batch, label_batch, predictions, filenum, num_examples_processed):
writer = tf.python_io.TFRecordWriter(FLAGS.output_dir + '/' + 'predictions-%04d.tfrecord' % filenum)
for i in range(num_examples_processed):
video_id = id_batch[i]
label = np.nonzero(label_batch[i,:])[0]
example = get_output_feature(video_id, label, [predictions[i,:]], ['predictions'])
serialized = example.SerializeToString()
writer.write(serialized)
writer.close()
def write_to_record(id_batch, label_batch, input_batch, filenum, num_examples_processed):
writer = tf.python_io.TFRecordWriter(FLAGS.output_dir + '/' + 'predictions-%04d.tfrecord' % filenum)
for i in range(num_examples_processed):
video_id = id_batch[i]
label = np.nonzero(label_batch[i,:])[0]
example = get_output_feature(video_id, label, [input_batch[i,:]], ['input'])
serialized = example.SerializeToString()
writer.write(serialized)
writer.close()
def write_to_record(id_batch, label_batch, predictions, filenum, num_examples_processed):
writer = tf.python_io.TFRecordWriter(FLAGS.output_dir + '/' + 'predictions-%04d.tfrecord' % filenum)
for i in range(num_examples_processed):
video_id = id_batch[i]
label = np.nonzero(label_batch[i,:])[0]
example = get_output_feature(video_id, label, [predictions[i,:]], ['predictions'])
serialized = example.SerializeToString()
writer.write(serialized)
writer.close()