• 大小: 17KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-06-17
  • 语言: Python
  • 标签: 深度学习  TEXTCNN  

资源简介

深度学习TextCNN的keras和tensorflow实现,精简版。。。。

资源截图

代码片段和文件信息

import tensorflow as tf
import numpy as np
import os
import random


class CNN_Config(object):
    “““CNN配置参数“““
    ckpt_dir = ‘‘   #模型存放路径
    validate_every = 1 #几轮计算一次指标
    embedding_dim = 64  # 词向量维度
    seq_length = 600  # 序列长度
    num_classes = 10  # 类别数
    kernel_size = 5  # 卷积核尺寸
    vocab_size = 5000  # 词汇表达小
    filter_sizes = [23456]  #卷积和大小
    num_filters = 128  # 卷积核数目
    num_filters_total = num_filters * len(filter_sizes)
    hidden_dim = 128  # 全连接层神经元
    dropout_keep_prob = 0.5  # dropout保留比例
    learning_rate = 1e-3  # 学习率
    batch_size = 64  # 每批训练大小
    num_epochs = 10  # 总迭代轮次
    print_per_batch = 100  # 每多少轮输出一次结果
    save_per_batch = 10  # 每多少轮存入tensorboard
    initializer=tf.random_normal_initializer(stddev=0.1) #权值初始化
    l2_lambda = 0.0001  #L2正则参数
    decay_steps = 1000  #学习率衰减次数
    decay_rate = 0.1    #学习率衰减率
    clip_gradients=5.0     #学习率裁剪
    decay_rate_big=0.50     #学习率最大衰减率



def init_label_dict(num_classes):
    “““
    init label dict. this dict will be used to save TPFPFN
    :param num_classes:
    :return: label_dict: a dict. {label_index:(000)}
    “““
    label_dict={}
    for i in range(num_classes):
        label_dict[i]=(000)
    return label_dict

def get_label_using_logits(logitstop_number=5):
    index_list=np.argsort(logits)[-top_number:]
    index_list=index_list[::-1]
    return index_list
def get_target_label_short(eval_y):
    eval_y_short=[] #will be like:[226421391]
    for indexlabel in enumerate(eval_y):
        if label>0:
            eval_y_short.append(index)
    return eval_y_short

def compute_confuse_matrix(target_ypredict_ylabel_dictname=‘default‘):
    “““
    compute true postive(TP) false postive(FP) false negative(FN) given target lable and predict label
    :param target_y:
    :param predict_y:
    :param label_dict {label:(TPFPFN)}
    :return: macro_f1(a scalar)micro_f1(a scalar)
    “““
    #1.get target label and predict label
    if random.choice([x for x in range(300)]) == 1:
        print(name+“.target_y:“target_y“;predict_y:“predict_y)

    #2.count number of TPFPFN for each class
    y_labels_unique=[]
    y_labels_unique.extend(target_y)
    y_labels_unique.extend(predict_y)
    y_labels_unique=list(set(y_labels_unique))
    for ilabel in enumerate(y_labels_unique): #e.g. label=2
        TP FP FN = label_dict[label]
        if label in predict_y and label in target_y:#predict=1truth=1 (TP)
            TP=TP+1
        elif label in predict_y and label not in target_y:#predict=1truth=0(FP)
            FP=FP+1
        elif label not in predict_y and label in target_y:#predict=0truth=1(FN)
            FN=FN+1
        label_dict[label] = (TP FP FN)
    return label_dict


def compute_micro_macro(label_dict):
    “““
    compute f1 of micro and macro
    :param label_dict:
    :return: f1_microf1_macro: scalar scalar
    “““
    f1_micro = 

评论

共有 条评论