tesseract4.0.0 中文语言包_一份TensorFlow2.0中文教程

近两个月,网上已经出现了大量 TensorFlow 2 0 英文教程。在此文章中,本文为大家推荐一个持续更新的中文教程,以便大家学习。来源:机器之心

今年 3 月份,谷歌在 Tensorflow Developer Summit 2019 大会上发布 TensorFlow 2.0 Alpha 版。作为当前最为流行的深度学习框架,2.0 Alpha 版的正式发布引人关注。近两个月,网上已经出现了大量 TensorFlow 2.0 英文教程。在此文章中,本文为大家推荐一个持续更新的中文教程,以便大家学习。

a1cf854aa179968d20bf589911084347.png

虽然,自 TensorFlow 2.0 发布以来,我们总是能够听到「TensorFlow 2.0 就是 keras」、「说的很好,但我用 PyTorch」类似的吐槽。但毋庸置疑,TensorFlow 依然是当前最主流的深度学习框架(感兴趣的读者可查看机器之心文章:2019 年,TensorFlow 被拉下马了吗?)。

整体而言,为了吸引用户,TensorFlow 2.0 从简单、强大、可扩展三个层面进行了重新设计。特别是在简单化方面,TensorFlow 2.0 提供更简化的 API、注重 Keras、结合了 Eager execution。

过去一段时间,机器之心为大家编译介绍了部分英文教程,例如:

如何在 TensorFlow 2.0 中构建强化学习智能体

TensorFlow 2.0 到底怎么样?简单的图像分类任务探一探

此文章中,机器之心为大家推荐一个持续更新的中文教程,方便大家更系统的学习、使用 TensorFlow 2.0 :

知乎专栏地址:https://zhuanlan.zhihu.com/c_1091021863043624960

Github 项目地址:https://github.com/czy36mengfei/tensorflow2_tutorials_chinese

该教程是 NLP 爱好者 Doit 在知乎上开的一个专栏,由作者从 TensorFlow2.0 官方教程的个人学习复现笔记整理而来。作者将此教程分为了三类:TensorFlow 2.0 基础教程、TensorFlow 2.0 深度学习实践、TensorFlow 2.0 基础网络结构。

以基础教程为例,作者整理了 Keras 快速入门教程、eager 模式、Autograph 等。目前为止,该中文教程已经包含 20 多篇文章,作者还在持续更新中,感兴趣的读者可以 follow。

b2526034bcb7f135f230112461ba1f14.png
c9b3f52c30f3350117f3701cba65966c.png

该中文教程当前目录

以下是作者整理的「Keras 快速入门」教程内容。


Keras 快速入门

Keras 是一个用于构建和训练深度学习模型的高阶 API。它可用于快速设计原型、高级研究和生产。

keras 的 3 个优点: 方便用户使用、模块化和可组合、易于扩展

1. 导入 tf.keras

tensorflow2 推荐使用 keras 构建网络,常见的神经网络都包含在 keras.layer 中 (最新的 tf.keras 的版本可能和 keras 不同)

import tensorflow as tf

from tensorflow.keras import layers

print(tf.__version__)

print(tf.keras.__version__)


2. 构建简单模型

2.1 模型堆叠

最常见的模型类型是层的堆叠:tf.keras.Sequential 模型

model = tf.keras.Sequential()

model.add(layers.Dense(32, activation='relu'))

model.add(layers.Dense(32, activation='relu'))

model.add(layers.Dense(10, activation='softmax'))

2.2 网络配置

tf.keras.layers 中网络配置:

activation:设置层的激活函数。此参数由内置函数的名称指定,或指定为可调用对象。默认情况下,系统不会应用任何激活函数。

kernel_initializer 和 bias_initializer:创建层权重(核和偏差)的初始化方案。此参数是一个名称或可调用对象,默认为 "Glorot uniform" 初始化器。

kernel_regularizer 和 bias_regularizer:应用层权重(核和偏差)的正则化方案,例如 L1 或 L2 正则化。默认情况下,系统不会应用正则化函数。

layers.Dense(32, activation='sigmoid')

layers.Dense(32, activation=tf.sigmoid)

layers.Dense(32, kernel_initializer='orthogonal')

layers.Dense(32, kernel_initializer=tf.keras.initializers.glorot_normal)

layers.Dense(32, kernel_regularizer=tf.keras.regularizers.l2(0.01))

layers.Dense(32, kernel_regularizer=tf.keras.regularizers.l1(0.01))


3. 训练和评估

3.1 设置训练流程

构建好模型后,通过调用 compile 方法配置该模型的学习流程:

model = tf.keras.Sequential()

model.add(layers.Dense(32, activation='relu'))

model.add(layers.Dense(32, activation='relu'))

model.add(layers.Dense(10, activation='softmax'))

model.compile(optimizer=tf.keras.optimizers.Adam(0.001),

loss=tf.keras.losses.categorical_crossentropy,

metrics=[tf.keras.metrics.categorical_accuracy])

3.2 输入 Numpy 数据

import numpy as np

train_x = np.random.random((1000, 72))

train_y = np.random.random((1000, 10))

val_x = np.random.random((200, 72))

val_y = np.random.random((200, 10))

model.fit(train_x, train_y, epochs=10, batch_size=100,

validation_data=(val_x, val_y))

3.3tf.data 输入数据

dataset = tf.data.Dataset.from_tensor_slices((train_x, train_y))

dataset = dataset.batch(32)

dataset = dataset.repeat()

val_dataset = tf.data.Dataset.from_tensor_slices((val_x, val_y))

val_dataset = val_dataset.batch(32)

val_dataset = val_dataset.repeat()

model.fit(dataset, epochs=10, steps_per_epoch=30,

validation_data=val_dataset, validation_steps=3)

3.4 评估与预测

test_x = np.random.random((1000, 72))

test_y = np.random.random((1000, 10))

model.evaluate(test_x, test_y, batch_size=32)

test_data = tf.data.Dataset.from_tensor_slices((test_x, test_y))

test_data = test_data.batch(32).repeat()

model.evaluate(test_data, steps=30)

# predict

result = model.predict(test_x, batch_size=32)

print(result)

b17cbb4e661555ef81334c2d7dff7580.png

4. 构建高级模型

4.1 函数式 api

tf.keras.Sequential 模型是层的简单堆叠,无法表示任意模型。使用 Keras 函数式 API 可以构建复杂的模型拓扑,例如:

多输入模型,

多输出模型,

具有共享层的模型(同一层被调用多次),

具有非序列数据流的模型(例如,残差连接)。

使用函数式 API 构建的模型具有以下特征:

层实例可调用并返回张量。

输入张量和输出张量用于定义 tf.keras.Model 实例。

此模型的训练方式和 Sequential 模型一样。

input_x = tf.keras.Input(shape=(72,))

hidden1 = layers.Dense(32, activation='relu')(input_x)

hidden2 = layers.Dense(16, activation='relu')(hidden1)

pred = layers.Dense(10, activation='softmax')(hidden2)

model = tf.keras.Model(inputs=input_x, outputs=pred)

model.compile(optimizer=tf.keras.optimizers.Adam(0.001),

loss=tf.keras.losses.categorical_crossentropy,

metrics=['accuracy'])

model.fit(train_x, train_y, batch_size=32, epochs=5)

4.2 模型子类化

通过对 tf.keras.Model 进行子类化并定义您自己的前向传播来构建完全可自定义的模型。在 init 方法中创建层并将它们设置为类实例的属性。在 call 方法中定义前向传播

class MyModel(tf.keras.Model):

def __init__(self, num_classes=10):

super(MyModel, self).__init__(name='my_model')

self.num_classes = num_classes

self.layer1 = layers.Dense(32, activation='relu')

self.layer2 = layers.Dense(num_classes, activation='softmax')

def call(self, inputs):

h1 = self.layer1(inputs)

out = self.layer2(h1)

return out

def compute_output_shape(self, input_shape):

shape = tf.TensorShapej(input_shape).as_list()

shape[-1] = self.num_classes

return tf.TensorShape(shape)

model = MyModel(num_classes=10)

model.compile(optimizer=tf.keras.optimizers.RMSprop(0.001),

loss=tf.keras.losses.categorical_crossentropy,

metrics=['accuracy'])

model.fit(train_x, train_y, batch_size=16, epochs=5)

4.3 自定义层

通过对 tf.keras.layers.Layer 进行子类化并实现以下方法来创建自定义层:

build:创建层的权重。使用 add_weight 方法添加权重。

call:定义前向传播。

compute_output_shape:指定在给定输入形状的情况下如何计算层的输出形状。或者,可以通过实现 get_config 方法和 from_config 类方法序列化层。

class MyLayer(layers.Layer):

def __init__(self, output_dim, **kwargs):

self.output_dim = output_dim

super(MyLayer, self).__init__(**kwargs)

def build(self, input_shape):

shape = tf.TensorShape((input_shape[1], self.output_dim))

self.kernel = self.add_weight(name='kernel1', shape=shape,

initializer='uniform', trainable=True)

super(MyLayer, self).build(input_shape)

def call(self, inputs):

return tf.matmul(inputs, self.kernel)

def compute_output_shape(self, input_shape):

shape = tf.TensorShape(input_shape).as_list()

shape[-1] = self.output_dim

return tf.TensorShape(shape)

def get_config(self):

base_config = super(MyLayer, self).get_config()

base_config['output_dim'] = self.output_dim

return base_config

@classmethod

def from_config(cls, config):

return cls(**config)

model = tf.keras.Sequential(

[

MyLayer(10),

layers.Activation('softmax')

])

model.compile(optimizer=tf.keras.optimizers.RMSprop(0.001),

loss=tf.keras.losses.categorical_crossentropy,

metrics=['accuracy'])

model.fit(train_x, train_y, batch_size=16, epochs=5)

4.4 回调

callbacks = [

tf.keras.callbacks.EarlyStopping(patience=2, monitor='val_loss'),

tf.keras.callbacks.TensorBoard(log_dir='./logs')

]

model.fit(train_x, train_y, batch_size=16, epochs=5,

callbacks=callbacks, validation_data=(val_x, val_y))


5 保持和恢复

5.1 权重保存

model = tf.keras.Sequential([

layers.Dense(64, activation='relu'),

layers.Dense(10, activation='softmax')])

model.compile(optimizer=tf.keras.optimizers.Adam(0.001),

loss='categorical_crossentropy',

metrics=['accuracy'])

model.save_weights('./weights/model')

model.load_weights('./weights/model')

model.save_weights('./model.h5')

model.load_weights('./model.h5')

5.2 保存网络结构

# 序列化成json

import json

import pprint

json_str = model.to_json()

pprint.pprint(json.loads(json_str))

fresh_model = tf.keras.models.model_from_json(json_str)

# 保持为yaml格式 #需要提前安装pyyaml

yaml_str = model.to_yaml()

print(yaml_str)

fresh_model = tf.keras.models.model_from_yaml(yaml_str)

5.3 保存整个模型

model = tf.keras.Sequential([

layers.Dense(10, activation='softmax', input_shape=(72,)),

layers.Dense(10, activation='softmax')

])

model.compile(optimizer='rmsprop',

loss='categorical_crossentropy',

metrics=['accuracy'])

model.fit(train_x, train_y, batch_size=32, epochs=5)

model.save('all_model.h5')

model = tf.keras.models.load_model('all_model.h5')

ef3abdb703bb6898c00c8738f9bd90c0.png

6. 将 keras 用于 Estimator

Estimator API 用于针对分布式环境训练模型。它适用于一些行业使用场景,例如用大型数据集进行分布式训练并导出模型以用于生产

model = tf.keras.Sequential([layers.Dense(10,activation='softmax'),

layers.Dense(10,activation='softmax')])

model.compile(optimizer=tf.keras.optimizers.RMSprop(0.001),

loss='categorical_crossentropy',

metrics=['accuracy'])

estimator = tf.keras.estimator.model_to_estimator(model)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML的块级元素和行级元素的标签列表

行内元素列表: <a>标签可定义锚点 <abbr>表示一个缩写形式 <acronym>定义只取首字母缩写 <b>字体加粗 <bdo>可覆盖默认的文本方向 <big>大号字体加粗 <br>换行符号 <cite>引用进行定义 <code>定义计算机代码文…

mysql select count 5万条数据很慢_mysql亿级数据数据库优化方案测试银行交易流水记录的查询...

点击上方△蓝字关注我们带你征服编程和泡妞两座大山对MySQL的性能和亿级数据的处理方法思考&#xff0c;以及分库分表到底该如何做&#xff0c;在什么场景比较合适&#xff1f;比如银行交易流水记录的查询限盐少许&#xff0c;上实际实验过程&#xff0c;以下是在实验的过程中做…

jvm垃圾回收机制_干货|JVM垃圾回收机制

前言不同于C程序员必须自己完成内存的分配、使用和释放&#xff0c;JAVA语言提供了垃圾回收机制(GC&#xff0c;Garbage Collection)&#xff0c;所以JAVA程序员仅需要负责分配和使用内存即可&#xff0c;而释放内存则由GC负责。这样程序员就从讨厌的内存管理的工作中脱身了。本…

HTML的列表说明

<ul></ul>无序列表&#xff08;Unordered List&#xff09; <ol></ol>有序列表 (Ordered List) <li> 标签定义列表项目。 <li> 标签可用在有序列表 (<ol>) 和无序列表 (<ul>) 中 两个常用的CSS列表属性 CSS3帮助文档 li…

计算机考试网络应用题一定要做到ie浏览器,网络远程教育统考单项练习:计算机应用基础之Internet应用部分(二)...

计算机考试的分数提高离不开日常的练习&#xff0c;下面&#xff0c;就做几道Internet应用部分的题目练习和巩固一下吧&#xff01;1、在IE9浏览器中按地址栏后的“停止”按钮&#xff0c;浏览器将会______。A.中断正在浏览的web页的连接B.关闭该web页的页面C.关闭浏览器窗口D.…

javascript实现图片轮播_第2章 第9节 JavaScript(四)

● 知道哪些ES6&#xff0c;ES7的语法参考回答&#xff1a;promise&#xff0c;await/async&#xff0c;let、const、块级作用域、箭头函数● promise和await/async的关系参考回答&#xff1a;都是异步编程的解决方案● 问了一段js代码&#xff0c;输出结果是什么● js的数据类…

HTML的HTTP 中 GET 与 POST 的区别

99% 的人都理解错了 HTTP 中 GET 与 POST 的区别&#xff08;转&#xff09;转自&#xff1a;WebTechGarden 微信公众号GET 和 POST 是 HTTP 请求的两种基本方法&#xff0c;要说它们的区别&#xff0c;接触过 WEB 开发的人都能说出一二。最直观的区别就是 GET 把参数包含在 UR…

利用计算机可产生随机数,一种利用计算机生成随机数的方法

一种利用计算机生成随机数的方法(2012-07-16 23:22:33)标签&#xff1a;随机数函数数值计数器程序运行杂谈这里介绍一种利用计算机生成随机数的方法&#xff0c;微机都有系统计数器记录自运行开始以来的脉冲数&#xff0c;这是个规律变化的数字&#xff0c;只用它是不能产生随机…

每天最重要的2小时

每天最重要的2小时 各位优秀的同学们&#xff0c;大家早上好&#xff01; 真的特别开心&#xff0c;我们还能继续相约YY空中平台一起学习。一个人走得快&#xff0c;一群人才能走得远。 我是来自一组的金鱼&#xff0c;就是那位拥有“七世记忆”的金鱼&#xff0c;原产地美…

html360度视角观赏,360度全景图是如何生成的?

360度全景图是如何生成的?360度全景图以其生动的交互和沉浸的体验&#xff0c;一直深受很多摄影爱好者的喜欢。不过对于普通的观赏者而言&#xff0c;这种可以360度自由观看的图片&#xff0c;还是具有神奇的魅力。今天&#xff0c;我就讲一讲一张360度全景图是如何生成的吧!普…

未结束的字符文字_PAT B1042:字符统计

题目描述&#xff1a;请编写程序&#xff0c;找出一段给定文字中出现最频繁的那个英文字母。输入格式&#xff1a;输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成&#xff0c;至少包含 1 个英文字母&#xff0c;以回车结束&#…

圣诞表白html,圣诞节表白,最浪漫的表白方式

圣诞节是一个浪漫的节日&#xff0c;红色的圣诞&#xff0c;白色的你们&#xff0c;再适合表白不过了。那么&#xff0c;圣诞节表白&#xff0c;最浪漫的表白方式有哪些呢?和小编一起来看看吧!圣诞节表白1.看着梦幻的圣诞彩灯说“我能喜欢你吗”冬夜绚丽彩灯下的告白&#xff…

怎么发朋友圈才是合适和得体的?

怎么发朋友圈才是合适和得体的&#xff1f; 怎么发朋友圈才是合适和得体的&#xff1f;这个问题估计困扰了不少人。其实你转换一下想法&#xff0c;你作为别人朋友圈的读者&#xff0c;希望看到的是什么内容&#xff1f; 1.这人最近在忙什么&#xff1f; 有没有可能合作。 …

python 3d绘图库_python – 用于科学3d绘图的Mayavi的替代品

在没有令人满意的第一个答案和无法解释的downvote之后编辑&#xff1a; 我需要绘制一个在3D网格中构造的标量字段,如下所示&#xff1a; import numpy as np from mayavi import mlab dt 10 X,Y,Z np.mgrid[0:dt,0:dt,0:dt] F X**2Y**2Z**2 test mlab.figure(size (1024,7…

python数字转字符串_python如何将字符转换为数字

int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字符串 repr(x ) 将对象 x 转换为表达式字符…

计算机网络中缓存技术,编程达人

计算机缓存也就是通常说的Cache&#xff0c;对计算机编程有所了解的应该都知道&#xff0c;缓存常与Redis联系在一起&#xff0c;但是Redis仅仅是应用中的一部分。1、浏览器缓存浏览器面对的问题是网络访问的速度远远低于本地访问的速度&#xff0c;每次都访问造成网络开销太大…

计算机是怎么RUN起来的

1.实际上计算机只会实现输入、运算、输出 这三大模块缺一不可&#xff0c;缺少输入意味着没有用户能使用&#xff0c;缺少运算相当于一条电线毫无意义&#xff0c;缺少输出相当于一直堆积信息的垃圾箱 因此计算机的硬件是由大量的IC(Integrated Circuit 集成电路)组成&#…

python缺点这么多、为什么还流行_Python这么火,为什么说它不是未来的编程语言?...

本文转载自公众号“读芯术”(ID&#xff1a;AI_Discovery) Python这两年非常火&#xff0c;随处可见的广告让它逐渐变成了一种老少皆知的存在。 虽然问世几十年后&#xff0c;Python才得到编程社区的重视。 但是&#xff0c;其发展的势头似乎无人能及。自2010年年初以来&#x…

与计算机硬件系统紧密相关的程序设计语言是,与计算机硬件系统紧密相关的程序设计语言是...

摘要&#xff1a;计硬件智慧_章节测安全案树_食品试答。系统相关序设星尔章节应用雅_答案_超测验数学。紧密计语星尔整合章节满分雅_答案_超测试思维。...计硬件智慧_章节测安全案树_食品试答。算机学营销单元答案市场。系统相关序设星尔章节应用雅_答案_超测验数学。学_信公智…

快速掌握一门计算机语言,程序员5种编程入门方法,快速学会一门编程语言!...

技术更新太快&#xff0c;精通一门编程语言已经实属不易&#xff0c;又怎么好意思说精通多门语言呢?这对于编程思想也是大有裨益的。每门设计语言都有其独特的设计思想&#xff0c;譬如PHP的关联数组perl、Ruby的对象模型源自Smalltalk。如何快速学会一门编程语言?下面w3csch…