Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[URGENT] help! with tensorflow implementation #62

Open
nitincs opened this issue Oct 16, 2019 · 1 comment
Open

[URGENT] help! with tensorflow implementation #62

nitincs opened this issue Oct 16, 2019 · 1 comment

Comments

@nitincs
Copy link

nitincs commented Oct 16, 2019

##objective_function
def custom_objective(y_true, y_pred):
    y_true = tf.reshape(y_true, [-1])
    y_pred = tf.reshape(y_pred, [-1])
    d = y_true - y_pred
    n_seg = 32  # Because we have 32 segments per video.
    nvid = 60
    n_exp = nvid // 2
    Num_d = 32 * nvid
    sub_max = []  # sub_max represents the highest scoring instants in bags (videos).
    sub_sum_labels = tf.ones_like(y_true)
    sub_sum_l1 = []
    sub_l2 = []  

    for ii in range(0, nvid, 1):
        # For Labels
        mm = y_true[ii * n_seg:ii * n_seg + n_seg]
        sub_sum_labels = tf.concat([sub_sum_labels, [tf.math.reduce_sum(mm)]],0)  # Just to keep track of abnormal and normal vidoes

        # For Features scores
        Feat_Score = y_pred[ii * n_seg:ii * n_seg + n_seg]
        sub_max = tf.concat([sub_max, [
            tf.reduce_max(Feat_Score, 0)]], 0)  # Keep the maximum score of scores of all instances in a Bag (video)
        sub_sum_l1 = tf.concat(
            [sub_sum_l1,
             [tf.math.reduce_sum(Feat_Score)]], 0)  # Keep the sum of scores of all instances in a Bag (video)

        z1 = tf.ones_like(Feat_Score)
        z2 = tf.concat([z1, Feat_Score], 0)
        z3 = tf.concat([Feat_Score, z1], 0)
        z_22 = z2[31:]
        z_44 = z3[:33]
        z = z_22 - z_44
        z = z[1:32]
        z = tf.math.reduce_sum(tf.math.square(z))
        sub_l2 = tf.concat([sub_l2, [z]], 0)

    sub_score = sub_max  # We need this step since we have used T.ones_like
    F_labels = sub_sum_labels[Num_d:]

    sub_sum_l1 = sub_sum_l1[:n_exp]
    sub_l2 = sub_l2[Num_d:]
    sub_l2 = sub_l2[:n_exp]

    indx_abn = tf.where(tf.equal(F_labels, 32)) # checck for zero or 1

    indx_nor = tf.where(tf.equal(F_labels, 0))
    n_Nor = n_exp

    Sub_Nor = tf.gather_nd(sub_score, indx_nor)
    Sub_Abn = tf.gather_nd(sub_score, indx_abn)

    z = []
    for ii in range(0, n_Nor, 1):
        sub_z = tf.reduce_max(1 - Sub_Abn + Sub_Nor[ii], 0)
        z = tf.concat([z, [tf.math.reduce_sum(sub_z)]], 0)

    z = tf.math.reduce_mean(z) + 0.00008 * tf.math.reduce_sum(sub_sum_l1) + 0.00008 * tf.math.reduce_sum(sub_l2)  # Final Loss f

    return z

we have implemented this code of the objective function with tenorflow v.1.13, but the training is still not showing any good results like the original implementation, can anyone take a look at this, and point out some suggestions based on this

@nitincs nitincs changed the title help! with tensorflow implementation [URGENT] help! with tensorflow implementation Oct 16, 2019
@uname0x96
Copy link

uname0x96 commented Nov 8, 2019

@nitincs can you post your train file?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants