TensorFlow 常用模块

TensorFlow 常用模块

https://tf.wiki/zh/basic/tools.html

如果程序报错,建议包含以下信息以帮助排除问题:

  • TensorFlow 版本(请检查 TensorFlow 版本为 2.0 及以上)
import tensorflow as tf
print (tf.__version__)
  • 完整的最小可运行程序代码(建议将代码在 IDE 中运行而不是交互式环境)
  • 完整的报错信息(Traceback)

请问一下,from zh ,zh 是什么库,我网上没有查询到

是不是作者自己建的类?

zh 代表本手册的中文注释版源代码目录。前言部分 有提到:

本书的所有示例代码可至 tensorflow-handbook/source/_static/code at master · snowkylin/tensorflow-handbook · GitHub 获得。其中 zh 目录下是含中文注释的代码, en 目录下是含英文版注释的代码。在使用时,建议将代码根目录加入到 PYTHONPATH 环境变量,或者使用合适的 IDE(如 PyCharm)打开代码根目录,从而使得代码间的相互调用(形如 import zh.XXX 的代码)能够顺利运行。

好的,找到了,谢谢~

推荐一个个人觉得非常有用的 Tensorboard 高维向量可视化工具 Projector官方教程 也不难。

文档中还是有一些小错误的,有的不仔细研究还挺难发现问题的。

使用传统的 tf.Session 这节中:

sess.run (sparse_categorical_accuracy.update (y_true=data_loader.test_label [start_index: end_index], y_pred=y_pred))

应该修改为

sess.run (sparse_categorical_accuracy.update_state (y_true=data_loader.test_label [start_index: end_index], y_pred=y_pred))

已经合并 pr,可能是这部分代码比较老了没有及时更新。感谢 bug fix。

1 Like

1.老师,好像在附录里面没有看到关于图执行模式的深入探讨参考资料呀?麻烦确定一下~
2.如果想进一步了解学习 tensorflow 架构设计方面的知识,老师有推荐的资料吗?

  1. 请参考 https://mp.weixin.qq.com/s?__biz=MzU1OTMyNDcxMQ==&mid=2247487599&idx=1&sn=13a53532ad1d2528f0ece4f33e3ae143&chksm=fc185b27cb6fd2313992f8f2644b0a10e8dd7724353ff5e93a97d121cd1c7f3a4d4fcbcb82e8&scene=21#wechat_redirect (这部分是专门为 TensorFlow 官方公众微信号写的)
  2. 考虑一下 GitHub - horance-liu/tensorflow-internals: It is open source ebook about TensorFlow kernel and implementation mechanism.

雪麒老师,对 tensorflow2.0 的基本开发有一定了解之后,后续是否需要再去学习一下 tensorflow1.X 的使用呀?

如果你接手了什么 TensorFlow 1.X 开发的旧项目又无法升级的话可以学习。总之就是如果用得到(或者不得不用)就去学,否则必要不大。

雪麒老师,保存训练模型时,在命令行输入"–mode=test",显示’–mode’ 不是内部或外部命令,也不是可运行的程序或批处理文件。我查了资料也没搞明白,这是为什么呀?

这里是说在命令行参数中加入 --mode=test 并再次运行代码。也就是说,如果你之前在终端执行代码的指令是

python code.py

那么你现在应该在终端中执行

python code.py --mode=test

具体可以参考 argparse --- 命令行选项、参数和子命令解析器 — Python 3.12.0 文档

明白了,谢谢大佬 :laughing:,终于搞明白这个 argparse 模块了

我发现了一个小错误,应该是读取 “之前” 建立的吧,不是 “之间”

读取 TFRecord 文件

我们可以通过以下代码,读取之间建立的 train.tfrecords 文件,并通过 Dataset.map 方法,使用 tf.io.parse_single_example 函数对数据集中的每一个序列化的 tf.train.Example 对象解码。

笔误已改正,感谢提醒!

你好! 关于 cats-and-dogs 数据集,我尝试了很多模型,也尝试了文章中的模型,但是 acc 一直在 0.5,应该是完全没有训练出参数,能否帮忙看看是否是哪处 数据处理出错了?代码如下:

import tensorflow_datasets as tfds
import tensorflow as tf

dataset_name = 'cats_vs_dogs'
dataset, info = tfds.load (name=dataset_name, split=tfds.Split.TRAIN, with_info=True)
print (info)

def preprocess (features):
    image, label = features ['image'], features ['label']
    image = tf.image.resize (image, [256, 256]) / 255.0
    return image, label

train_dataset = dataset.map (preprocess).shuffle (23000).batch (32).prefetch (tf.data.experimental.AUTOTUNE)
model = tf.keras.Sequential ([
    tf.keras.layers.Conv2D (32, 3, activation='relu', input_shape=(256, 256, 3)),
    tf.keras.layers.MaxPooling2D (),
    tf.keras.layers.Conv2D (32, 5, activation='relu'),
    tf.keras.layers.MaxPooling2D (),
    tf.keras.layers.Flatten (),
    tf.keras.layers.Dense (64, activation='relu'),
    tf.keras.layers.Dense (2, activation='softmax')
])
model.compile (
    optimizer=tf.keras.optimizers.Adam (learning_rate=0.001),
    loss=tf.keras.losses.sparse_categorical_crossentropy,
    metrics=[tf.keras.metrics.sparse_categorical_accuracy]
)
model.fit (train_dataset, epochs=10)

我也尝试了用 InceptionV3 做迁移学习,效果都是 0.5,感觉是某块数据集处理上出问题,困扰了我好多天,请大佬帮忙看看,谢谢~

我在带 GPU 的 Colab 环境里运行了一下你的代码,似乎没什么问题。我不知道是不是由于训练时间过短造成的(这个数据集比较大,训练需要花一点时间)。