コード例 #1
0
ファイル: ProtoNet.py プロジェクト: tanmlh/Few-Shot-Learning
def proto_loss(embedding, nc, ns, nq):
    embedding = embedding.astype('float64');
    cls_data = nd.reshape(embedding[0:nc*ns], (nc, ns, -1)); cls_data.attach_grad()
    cls_center = nd.mean(cls_data, axis=1);
    data_center_dis = nd.norm(embedding[nc*ns:].expand_dims(axis=1) - cls_center.expand_dims(axis=0),
                              axis=2) ** 2

    # print(nd.max(data_center_dis).asscalar())


    weight = nd.zeros((nc*nq, nc), ctx=embedding.context, dtype='float64')
    pick_vec = nd.zeros((nc*nq), ctx=embedding.context)
    for i in range(0, nc):
        weight[i*nq:i*nq+nq, i] = 1
        pick_vec[i*nq:i*nq+nq] = i
    """
    temp = nd.SoftmaxOutput(-data_center_dis, label)
    temp = nd.log(temp) * weight
    temp = nd.sum(-temp, axis=1)
    predict = nd.argmin(data_center_dis, axis=1)
    return -temp * nd.log(temp), predict
    """

    temp1 = nd.log_softmax(-data_center_dis, axis=1);
    temp2 = nd.pick(temp1, index=pick_vec, axis=1);
    temp3 = nd.sum(-temp2);
    label = nd.argmin(data_center_dis, axis=1)
    return temp3 / (nc * nq), label
コード例 #2
0
def fit_f(net, batch_data, loss_function, *args, **kwargs):
    state, action, reward = batch_data
    loss = []
    pred = nd.pick(net(state), action)
    for _, loss_f in loss_function.items():
        loss.append(loss_f(pred, reward))
    return sum(loss)
コード例 #3
0
    def goodness_of_function_loss_function(self):
        # 取指数使得所有值 > 0
        self.__batch_y_hat_exp = nd.exp(self.__batch_y_hat)
        # 求 partition 用于归一化概率
        self.__batch_y_hat_partition = self.__batch_y_hat_exp.sum(
            axis=1, keepdims=True)
        self.__batch_y_hat_exp_divided_partition = self.__batch_y_hat_exp / self.__batch_y_hat_partition

        return -nd.log(
            nd.pick(self.__batch_y_hat_exp_divided_partition, self.__batch_y))
コード例 #4
0
 def hybrid_forward(self, F, pred, label, valid_length):
     pred = pred[:, :-1, :]
     label = label[:, 1:]
     valid_length = valid_length - 1
     if not self._from_logits:
         pred = F.log_softmax(pred, self._axis)
     loss = mx.nd.squeeze(
         -F.pick(pred, label, axis=self._axis, keepdims=True), axis=2)
     loss = F.SequenceMask(loss.swapaxes(0, 1),
                           sequence_length=valid_length,
                           use_sequence_length=True).swapaxes(0, 1)
     return F.mean(loss, axis=self._batch_axis, exclude=True)
コード例 #5
0
ファイル: data.py プロジェクト: leocvml/deeplabv3-mxnet_gluon
 def hybrid_forward(self, F, pred, label, sample_weight=None):
     if not self._from_logits:
         pred = F.log_softmax(pred, axis=self._axis)
     if self._sparse_label:
         if self._size_average:
             valid_label_map = (label !=
                                self._ignore_label).astype('float32')
             loss = -(F.pick(pred, label, axis=self._axis, keepdims=True) *
                      valid_label_map)
         else:
             loss = -F.pick(pred, label, axis=self._axis, keepdims=True)
             loss = F.where(
                 label.expand_dims(axis=self._axis) == self._ignore_label,
                 F.zeros_like(loss), loss)
     else:
         label = _reshape_like(F, label, pred)
         loss = -F.sum(pred * label, axis=self._axis, keepdims=True)
     loss = _apply_weighting(F, loss, self._weight, sample_weight)
     if self._size_average:
         return F.mean(loss, axis=self._batch_axis, exclude=True) * \
             valid_label_map.size / F.sum(valid_label_map)
     else:
         return F.mean(loss, axis=self._batch_axis, exclude=True)
コード例 #6
0
ファイル: lstm_ptb.py プロジェクト: AaronChiu2017/mxnet
def evaluate(test_net, test_data, args):
    exe_num = len(test_net._context)
    curr_states = test_net.get_states(merge_multi_context=False)
    # Set the state to zero when a new epoch begins
    for state_id in range(len(curr_states)):
        for exe_id in range(exe_num):
            curr_states[state_id][exe_id][:] = 0
    test_net.set_states(curr_states)
    total_nll = 0.0
    for i, start in enumerate(range(0, test_data.shape[0] - 1, args.bptt)):
        start = i * args.bptt
        data_batch_npy = np.take(test_data,
                                 np.arange(start, start + args.bptt),
                                 axis=0,
                                 mode="clip")
        target_batch_npy = np.take(test_data,
                                   np.arange(start + 1, start + 1 + args.bptt),
                                   axis=0,
                                   mode="clip")
        if start + args.bptt > test_data.shape[0]:
            valid_seq_len = test_data.shape[0] - start
        else:
            valid_seq_len = args.bptt
        test_net.forward(data_batch=mx.io.DataBatch(data=[mx.nd.array(data_batch_npy)]),
                         is_train=False)
        outputs = test_net.get_outputs(merge_multi_context=False)
        local_nll = 0.0
        for exe_id in range(exe_num):
            logits = outputs[0][exe_id]
            nll = - nd.pick(nd.log_softmax(logits), nd.array(target_batch_npy, ctx=logits.context),
                            axis=-1).asnumpy()
            local_nll += nll[:valid_seq_len, :].mean() * valid_seq_len
        total_nll += local_nll / exe_num
        for out_id in range(1, len(outputs)):
            for exe_id in range(exe_num):
                curr_states[out_id - 1][exe_id] = outputs[out_id][exe_id]
        test_net.set_states(states=curr_states)
    avg_nll = total_nll / test_data.shape[0]
    return avg_nll
コード例 #7
0
ファイル: loss.py プロジェクト: ljtnine/gluon_SSD-1
 def hybrid_forward(self, F, x, y, ignore_label=-1.):
     output = F.softmax(x)
     pt = F.pick(output, y, axis=self._axis)
     mask = y != ignore_label
     loss = -self._alpha * ((1 - pt)**self._gamma) * F.log(pt) * mask
     return F.sum(loss) / F.sum(mask)
コード例 #8
0
ファイル: model.py プロジェクト: mckim27/d2l-fashion-mnist
 def loss(self, y_hat, y):
     return -nd.pick(y_hat, y).log()
コード例 #9
0
ファイル: softmax_regression.py プロジェクト: lia-git/free_cv
 def cross_entropy(self, label):
     return - nd.pick(nd.log(self.pro_act), label)
コード例 #10
0
def cross_entropy(yhat, y):
    return - nd.pick(nd.log(yhat), y)
コード例 #11
0
ファイル: 测试.py プロジェクト: Jack1c/test_code
import mxnet.ndarray as nd
arr = [i for i in range(100)]

print(nd.pick(nd.array(arr)))

コード例 #12
0
ファイル: utils.py プロジェクト: luoyancn/mxnetai
def cross_entropy(yhat, y):
    return -nd.pick(nd.log(yhat), y)
コード例 #13
0
def cross_entropy(yhat, y):
    ret = -nd.pick(nd.log(yhat), y)
    #print("loss inf 1: " + str(yhat))
    #print("loss inf 2: " + str(y))
    return ret
コード例 #14
0
ファイル: resnet.py プロジェクト: cuhkcarl/grebeci
def cross_entropy(yhat, y):
    return - nd.log(nd.pick(yhat, y, axis=1, keepdims=True))
コード例 #15
0
ファイル: resnet.py プロジェクト: cuhkcarl/grebeci
def focal_loss(yhat, y, alpha, beta=2.0):
    alpha = alpha.reshape((1, -1))
    alpha_matrix = alpha.broadcast_to(shape=yhat.shape)
    Pt = nd.pick(yhat, y, axis=1, keepdims=True)
    return - nd.pick(alpha_matrix, y, axis=1, keepdims=True) * ((1.0 - Pt)**beta) * nd.log(Pt)
コード例 #16
0
ファイル: main.py プロジェクト: heechul90/Mxnet_Learning
def cross_entropy(yhat, y):
    # nd.pick(input, index)[i,j] =
    return -nd.pick(nd.log(yhat), y)
コード例 #17
0
def cross_entropy(yhat, y):  #yhat为预测 y为真实标签
    return -nd.pick(nd.log(yhat), y)  #注意为 负交叉熵
コード例 #18
0
def cross_entropy(yhat, y):#yhat为预测 y为真实标签
    return - nd.pick(nd.log(yhat), y)#注意为 负交叉熵
コード例 #19
0
def Plus_cross_entroy(yhat, y):
    return -nd.pick(nd.log(yhat), y)
コード例 #20
0
def cross_entropy(yhat, y):  # 交叉熵,因为此处yvec中只有一个1
    return - nd.pick(nd.log(yhat), y)  # 返回key为y对应的log值
コード例 #21
0
def cross_entropy(y_hat, y):
    return -nd.pick(y_hat.log(), y)
コード例 #22
0
ファイル: gluon.py プロジェクト: RunningV/mxnet_learning
def cross_entropy(y_, y):
    return -nd.pick(nd.log(y_), y)
コード例 #23
0
ファイル: multiplyRegression.py プロジェクト: wk738126046/ML
def cross_entropy(yhat, y):
    return -nd.pick(nd.log(yhat), y)  # return nd.log(yhat)=0 but index[3] =value (if y[0,0,0,1,0,0])