TensorFlow 用户编程接口演化简史
TL;DR TensorFlow 从 2015 年发布至今,用户编程接口经历了几次重大演化,本文将对这几次演化进行简要介绍,并讨论其背后的动机,方便读者理解 TensorFlow 在不同阶段的设计思路。 注解: 这里所说的用户编程接口,是指 TensorFlow 提供给用户的编程接口,而不是指 TensorFlow 的内部编程接口。 我们讨论的 TensorFlow 是一个泛义的概念,包括 TensorFlow 和 JAX 等基于相同底层的同样来自 Google 的机器学习框架。 TensorFlow 0.x 时代(2015 - 2017) 源代码:https://github.com/tensorflow/tensorflow/releases/tag/0.12.1 TensorFlow 0.x 时代的用户编程接口,后来被称为 TensorFlow Core, 是基于 Python 的,主要包括: tf.placeholder:用于定义占位符,用于表示输入数据的维度和类型,但不包含具体的数据。 tf.Variable:用于定义变量,用于表示模型参数,包含具体的数据。 tf.Session:用于执行计算图,将计算图中的节点映射到具体的设备上,并执行计算。 代码示例 一个经典的线性回归模型,可以用 TensorFlow 0.x 的代码表示如下: import tensorflow as tf sess = tf.InteractiveSession() # 定义模型输入 x = tf.placeholder(tf.float32, shape=[None, 784]) y_ = tf.placeholder(tf.float32, shape=[None, 10]) # 定义模型参数 W = tf.Variable(tf.zeros([784,10])) b = tf.Variable(tf.zeros([10])) sess.run(tf.global_variables_initializer()) # 初始化模型参数 # 预测值计算 y = tf.matmul(x,W) + b # 网络设计,这里是一个线性模型,y = Wx + b, W 和 b 是模型参数, x 是模型输入, y 是模型输出 # 定义损失函数 cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(y, y_)) # 交叉熵损失函数 # 定义优化器 train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # 训练模型 for i in range(1000): batch = mnist.train.next_batch(100) train_step.run(feed_dict={x: batch[0], y_: batch[1]}) TensorFlow 1.x 时代 (2017 - 2019) 在工作原理方面,TensorFlow 1.x 时代与 TensorFlow 0.x 时代的设计思路是一致的。但在用户编程接口方面,TensorFlow 1.x 时代的设计思路,与 TensorFlow 0.x 时代的设计思路有几个重大的变化: ...
ChatGPT 的解码过程和其中的各种参数
TL:DR OpenAI 的 ChatGPT 在其官方文档(https://platform.openai.com/docs/api-reference/chat/create)中给出了各种参数的范围和含义。我们将讨论 ChatGPT 的生成过程和这些参数是如何实现其生成的效果的。 ChatGPT 的解码过程 我们假设 minGPT (等同于 GPT-2) 和 ChatGPT 拥有一样的解码过程:https://github.com/karpathy/minGPT/blob/master/mingpt/model.py#LL283C12-L283C12 。 总体过程可以概括为以下几个步骤: 将用户的请求,从 1 个扩充成 num_samples 大小的 batch 进行模型推理,得到 logits 进行 temperature 映射:logits = logits / temperature [可选] 进行 topk 处理:logits = topk_func(logits, top_k) logits 到 概率的转换:probs = softmax(logits) 是否 sample: 进行 sample:idx_next = multinomial_sample(probs, num_samples=1) 不进行 sample:idx_next = topk_func(probs, k=1) 重复上述过程 max_new_tokens 次 ChatGPT 的解码参数 temperature temperature 参数的官方定义如下: temperature number Optional Defaults to 1 What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. ...
使用 Rasa 构建天气查询机器人
本文将介绍如何使用 Rasa NLU 和 Rasa Core 来构建一个简单的带 Web UI 界面的中文天气情况问询机器人(chatbot)。 ...
Rasa NLU 的 pipeline 和 component
本文将详细介绍 Rasa NLU 的 pipeline 和 component,介绍其原理和如何使用。 ...
构建中文分词器 - 隐马尔科夫模型
利用 隐马尔科夫模型(HMM) 的解码能力,能从一个观察序列(字符串序列)解码成另一个隐藏状态序列(分词符号序列)。 ...
构建中文分词器 - 双向最大匹配法
结合 正向最大匹配法 和 反向最大匹配法 的优点,按照一定的规则选择其中表现最优秀的结果作为 双向最大匹配法 的结果。 ...
构建中文分词器 - 有向无环图法
将所有可能的分词结果按照词语构建成一个有向无环图,寻找其中联合概率最大的路径。 ...
「盤古之白」
TL;DR 中文文案排版指南 ...
Chinese Spelling Check Task: 资料汇总
TL;DR 一些关于 Chinese Spelling Check Task 比较重要的会议和资料的整理和汇总。 ...
TenserFlow 新特性:Eager Execution
TL;DR 在即将发布(本文章写于 2018-01-06)的 TenserFlow v1.5 中,TensorFlow将会引入一个重要的 User-friendly 特性:Eager Execution. 本文章将展示 Eager Execution 引入的一些新的特性。 ...