deep learning学习笔记---MemN2N

简介: MemN2N简单介绍

MemN2N

1. Summary

MemN2N is a generalization of RNN
1) The sentence in MemN2N is equivalent to the word in RNN;

687474703a2f2f692e696d6775722e636f6d2f6e7638394a4c632e706e67

2. Kernel Code

  • Build Model
def build_model(self):
    self.build_memory()
    self.W = tf.Variable(tf.random_normal([self.edim, self.nwords], stddev=self.init_std))
    z = tf.matmul(self.hid[-1], self.W)
    self.loss = tf.nn.softmax_cross_entropy_with_logits(logits=z, labels=self.target)
    self.lr = tf.Variable(self.current_lr)
    self.opt = tf.train.GradientDescentOptimizer(self.lr)
    params = [self.A, self.B, self.C, self.T_A, self.T_B, self.W]
    grads_and_vars = self.opt.compute_gradients(self.loss,params)
    clipped_grads_and_vars = [(tf.clip_by_norm(gv[0], self.max_grad_norm), gv[1]) for gv in grads_and_vars]
    inc = self.global_step.assign_add(1)
    with tf.control_dependencies([inc]):
        self.optim = self.opt.apply_gradients(clipped_grads_and_vars)
    tf.global_variables_initializer().run()
    self.saver = tf.train.Saver()
  • Build Memory
def build_memory(self):
    self.global_step = tf.Variable(0, name="global_step")
    self.A = tf.Variable(tf.random_normal([self.nwords, self.edim], stddev=self.init_std))
    self.B = tf.Variable(tf.random_normal([self.nwords, self.edim], stddev=self.init_std))
    self.C = tf.Variable(tf.random_normal([self.edim, self.edim], stddev=self.init_std))
    
    # Temporal Encoding
    self.T_A = tf.Variable(tf.random_normal([self.mem_size, self.edim], stddev=self.init_std))
    self.T_B = tf.Variable(tf.random_normal([self.mem_size, self.edim], stddev=self.init_std))
    
    # m_i = sum A_ij * x_ij + T_A_i
    Ain_c = tf.nn.embedding_lookup(self.A, self.context)
    Ain_t = tf.nn.embedding_lookup(self.T_A, self.time)
    Ain = tf.add(Ain_c, Ain_t)
    
    # c_i = sum B_ij * u + T_B_i
    Bin_c = tf.nn.embedding_lookup(self.B, self.context)
    Bin_t = tf.nn.embedding_lookup(self.T_B, self.time)
    Bin = tf.add(Bin_c, Bin_t)
    
    for h in xrange(self.nhop):
        self.hid3dim = tf.reshape(self.hid[-1], [-1, 1, self.edim])
        Aout = tf.matmul(self.hid3dim, Ain, adjoint_b=True)
        Aout2dim = tf.reshape(Aout, [-1, self.mem_size])
        P = tf.nn.softmax(Aout2dim)
        
        probs3dim = tf.reshape(P, [-1, 1, self.mem_size])
        Bout = tf.matmul(probs3dim, Bin)
        Bout2dim = tf.reshape(Bout, [-1, self.edim])

        Cout = tf.matmul(self.hid[-1], self.C)
        Dout = tf.add(Cout, Bout2dim)

        self.share_list[0].append(Cout)

        if self.lindim == self.edim:
            self.hid.append(Dout)
        elif self.lindim == 0:
            self.hid.append(tf.nn.relu(Dout))
        else:
            F = tf.slice(Dout, [0, 0], [self.batch_size, self.lindim])
            G = tf.slice(Dout, [0, self.lindim], [self.batch_size, self.edim-self.lindim])
            K = tf.nn.relu(G)
            self.hid.append(tf.concat(axis=1, values=[F, K]))

3. Reference
Blog: Memory-network

Github: MemN2N-tensorflow

Paper: End-To-End Memory Networks

相关文章
|
API Windows
怎么申请 bing api key
1:打开网址 https://login.live.com/ 注册帐号并登录(点击上图中的登录按钮即可),在新窗口点击下方的“立即注册”(有帐号的可以直接登录)2:填写相关信息(推荐使用hotmail邮箱),填写完毕后点击下方的 即可PS:国家或地区请勿选择‘中国’,否则会出现‘在你的市场中未提供...
20747 1
|
存储 弹性计算 运维
|
12月前
|
机器学习/深度学习
过程奖励模型PRM成版本答案!谷歌DeepMind全自动标注逐步骤奖励PAV,准确率提升8%
研究团队提出了一种新的过程奖励模型(PRM),通过衡量每一步骤的进展来改进大型语言模型(LLM)的推理能力。与仅在最后提供反馈的结果奖励模型(ORM)不同,PRM能在多步骤推理中逐步提供反馈,从而改善信用分配。研究引入了过程优势验证者(PAV),用于预测证明策略下的进展,显著提升了测试时间搜索和在线强化学习(RL)的效率与准确性。实验表明,PAV相比ORM提高了8%以上的准确性和5至6倍的样本效率。该方法在Gemma2模型上得到了验证,并展示了在解决复杂问题上的潜力。尽管成果显著,但仍需进一步研究以优化证明策略的设计和减少拟合误差。
550 97
|
前端开发 JavaScript 开发者
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。
|
机器学习/深度学习 人工智能 算法
人工智能与医疗健康:AI如何改变生命科学
【10月更文挑战第31天】人工智能(AI)正深刻改变医疗健康和生命科学领域。本文探讨AI在蛋白质结构预测、基因编辑、医学影像诊断和疾病预测等方面的应用,及其对科研进程、医疗创新、服务效率和跨学科融合的深远影响。尽管面临数据隐私和伦理等挑战,AI仍有望为医疗健康带来革命性变革。
475 30
|
人工智能 算法 Java
解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
|
存储 消息中间件 数据安全/隐私保护
RocketMq Topic创建和删除
RocketMq Topic创建和删除
5815 0
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(三十七)(3)
Transformers 4.37 中文文档(三十七)
184 0
|
机器学习/深度学习 自然语言处理
LLM 系列 | 06:ChatGPT Prompt实践:文本摘要
今天这篇小作文主要介绍如何通过构建ChatGPT Prompt以解决「文本摘要」任务。
|
存储 SQL 人工智能
Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱
Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱
3385 0
Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱