np.prob()

 np.prod()函数用来计算所有元素的乘积,对于有多个维度的数组可以指定轴,如axis=1指定计算每一行的乘积。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
智能计算系统实验2 实验2.1:基于三层神经⽹络实现⼿写数字识别 实验⽬的 1. 实现三层神经⽹络模型进⾏⼿写数字分类,建⽴⼀个简单⽽完整的神经⽹络⼯程。通过本实验理解神经⽹络基本模块的作⽤和模块 间的关系,为后续建⽴更复杂的神经⽹络实验(如风格迁移)奠定基础。 2. 利⽤⾼级编程语⾔Python实现神经⽹络基本单元的前向传播(正向传播)和反向传播计算,加深对神经⽹络基本单元的理解,包括 全连接层、激活函数、损失函数等基本单元。 3. 利⽤⾼级编程语⾔Python实现神经⽹络构建,以及训练神经⽹络所使⽤的梯度下降算法,加深对神经⽹络训练过程的理解。 实验过程 数据集读取和预处理 train_labels = self.load_mnist(os.path.join(MNIST_DIR, TRAIN_LABEL), False) test_images = self.load_mnist(os.path.join(MNIST_DIR, TEST_DATA), True) test_labels = self.load_mnist(os.path.join(MNIST_DIR, TEST_LABEL), False) 全连接层 self.output = np.matmul(self.input, self.weight) + self.bias self.d_weight = np.dot(self.input.T, top_diff) self.d_bias = np.sum(top_diff, axis=0) bottom_diff = np.dot(top_diff, self.weight.T) self.weight = self.weight - lr * self.d_weight self.bias = self.bias - lr * self.d_bias relu层 output = np.maximum(0, self.input) bottom_diff = top_diff bottom_diff[self.input < 0] = 0 softmax层 self.prob = input_exp / np.sum(input_exp, axis=1, keepdims=True) bottom_diff = (self.prob - self.label_onehot) / self.batch_size 组⽹ self.fc2 = FullConnectedLayer(self.hidden1, self.hidden2) self.relu2 = ReLULayer() 前向传播和反向传播 h2 = self.fc2.forward(h1) h2 = self.relu2.forward(h2) h3 = self.fc3.forward(h2) dh3 = self.fc3.backward(dloss) dh2 = self.relu2.backward(dh3) dh2 = self.fc2.backward(dh2) 推导过程 实验打分标准 实验2.2:基于DLP平台实现⼿写数字分类 实验⽬的 熟悉深度学习处理器 DLP 平台的使⽤,能使⽤已封装好的 Python 接⼝的机器学习编程库 pycnml 将第2.1节的神经⽹络推断部分移植到 DLP 平台,实现⼿写数字分类。具体包括: 1. 利⽤提供 pycnml 库的 Python 接⼝搭建⼿写数字分类的三层神经⽹络。 2. 熟悉在 DLP 上运⾏神经⽹络的流程,为在后续章节详细学习 DLP ⾼性能库以及智 能编程语⾔打下基础。 3. 与第2.1节的实验进⾏⽐较,了解 DLP 相对于 CPU 的优势和劣势 实验过程 基本就是第⼀个实验的简化版,将layer的创建换成了pycml的接⼝,接⼝调⽤参考实验⼿册即可,注意要加载2.1实验保存的模型参数。 实验打分标准
1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验!下载完使用问题请私信沟通。 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程,如有问题或建议,请及时沟通。 5.期待你能在项目找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于pytorch的one vs rest文命名实体识别python源码+使用说明+模型+数据集.zip 这里的one vs rest是指进行实体识别时,每次只识别出其的一类,因此这里针对于每一类都有一个条件随机场计算损失,最终的损失是将每一类的损失都进行相加。这样做可以解决一个实体可能属于不同的类型问题。同时需要注意的是在解码的时候没有使用维特比解码,而是直接用np.argmax进行选择。这有点类似于基于机器阅读理解的实体识别,只不过这里没有提供问题,而且对于所有的类别只需要编码一次。 这里是以程序的cner数据为例,其余两个数据集需要自己按照模板进行修改尝试,数据地址参考:[基于bert_bilstm_crf文命名实体识别 ](pytorch_bert_bilstm_crf_ner)。如何修改: - 1、在raw_data下是原始数据,新建一个process.py处理数据得到mid_data下的数据。 - 2、运行preprocess_mc.py,得到final_data下的数据。具体相关的数据格式可以参考cner。 - 3、运行指令进行训练、验证和测试。 数据及训练好的模型下载:链接:https://pan.baidu.com/s/1sJsat-bksQH8PCBVZQOHKA?pwd=6udv 提取码:6udv # 依赖 ``` pytorch==1.6.0 tensorboasX seqeval pytorch-crf==0.7.2 transformers==4.4.0 ``` # 运行 ```python !python main.py \ --bert_dir="model_hub/chinese-bert-wwm-ext/" \ --data_dir="./data/cner/" \ --log_dir="./logs/" \ --output_dir="./checkpoints/" \ --num_tags=8 \ --seed=123 \ --gpu_ids="0" \ --max_seq_len=150 \ --lr=3e-5 \ --crf_lr=3e-2 \ --other_lr=3e-4 \ --train_batch_size=32 \ --train_epochs=10 \ --eval_batch_size=16 \ --max_grad_norm=1 \ --warmup_proportion=0.1 \ --adam_epsilon=1e-8 \ --weight_decay=0.01 \ --dropout_prob=0.3 \ --dropout=0.3 \ ``` ### 结果 基于bert_crf: ```python precision:0.9113 recall:0.8919 micro_f1:0.9015 precision recall f1-score support RACE 0.88 1.00 0.94 15 LOC 0.00 0.00 0.00 2 CONT 1.00 1.00 1.00 33 EDU 0.87 0.97 0.92 109 PRO 0.86 0.95 0.90 19 NAME 0.99 1.00 1.00 110 ORG 0.90 0.89 0.90 543 TITLE 0.91 0.86 0.88 770 micro-f1 0.91 0.89 0.90 1601 虞兔良先生:1963年12月出生,汉族,国国籍,无境外永久居留权

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾世林jiashilin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值