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 时代的设计思路有几个重大的变化: ...

八月 9, 2023 · 3 分钟 · Xiaoquan Kong

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. ...

八月 7, 2023 · 5 分钟 · Xiaoquan Kong

使用 Rasa 构建天气查询机器人

本文将介绍如何使用 Rasa NLU 和 Rasa Core 来构建一个简单的带 Web UI 界面的中文天气情况问询机器人(chatbot)。 ...

九月 9, 2018 · 2 分钟 · Xiaoquan Kong

Rasa NLU 的 pipeline 和 component

本文将详细介绍 Rasa NLU 的 pipeline 和 component,介绍其原理和如何使用。 ...

九月 8, 2018 · 2 分钟 · Xiaoquan Kong

构建中文分词器 - 隐马尔科夫模型

利用 隐马尔科夫模型(HMM) 的解码能力,能从一个观察序列(字符串序列)解码成另一个隐藏状态序列(分词符号序列)。 ...

八月 20, 2018 · 1 分钟 · Xiaoquan Kong

构建中文分词器 - 双向最大匹配法

结合 正向最大匹配法 和 反向最大匹配法 的优点,按照一定的规则选择其中表现最优秀的结果作为 双向最大匹配法 的结果。 ...

八月 14, 2018 · 1 分钟 · Xiaoquan Kong

构建中文分词器 - 有向无环图法

将所有可能的分词结果按照词语构建成一个有向无环图,寻找其中联合概率最大的路径。 ...

八月 14, 2018 · 1 分钟 · Xiaoquan Kong

「盤古之白」

TL;DR 中文文案排版指南 ...

一月 24, 2018 · 2 分钟 · Xiaoquan Kong

Chinese Spelling Check Task: 资料汇总

TL;DR 一些关于 Chinese Spelling Check Task 比较重要的会议和资料的整理和汇总。 ...

一月 16, 2018 · 1 分钟 · Xiaoquan Kong

TenserFlow 新特性:Eager Execution

TL;DR 在即将发布(本文章写于 2018-01-06)的 TenserFlow v1.5 中,TensorFlow将会引入一个重要的 User-friendly 特性:Eager Execution. 本文章将展示 Eager Execution 引入的一些新的特性。 ...

十二月 23, 2017 · 2 分钟 · Xiaoquan Kong