TensorFlow笔记4

墙外的入门

今天的歌可能否单曲循环中

中文社区里的内容,文章划定了建议使用者,显然我即使跑了也对内容熟悉了一下但是还是不甚理解,而且其中的内容还是在python2.7的环境下的,版本问题虽然修改起来也不是很费劲但是终究还是麻烦的,今天爬出墙看了看外面的这里是外面的教程。也是挺喜欢的了,果然还是要看外面的。

其教程的主要内容也不是基于TensorFlow本身的图、op之类的了,而是从高阶API入手(如Keras),并在文档内部将TensorFlow本身的graph、session作为低阶API进行介绍。大致的看了看Keras的“口碑”情况,比较感兴趣的一句话就是Keras的构建模型方式是面向编程者思维的,而不是计算机思维。更简单来说就是好上手吧。但是关于TensorFlow内部的实现也就是低阶的API了解和尽量理解还是有好处的。

1.基本分类

基本分类部分,是采用了FashionMinist进行的分类,这里没遇到什么问题。代码还是会提到Github上。主要就是对Keras构建神经网络的了解。
Keras对于模型的构建,就很符合平时我们经常看见的圈圈图了,按照层来进行构建,简直不要更容易理解(之前看TensorFlow使用op构建CNN的时候,简直一脸懵逼,脑子不够用)。

使用Keras构建神经网络,需要先配置模型的层,然后再进行编译。
设置层:
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])

该网络中的第一层 tf.keras.layers.Flatten将图像格式从二维数组(28x28 像素)转换成一维数组(28 * 28 = 784 像素)。可以将该层视为图像中像素未堆叠的行,并排列这些行。该层没有要学习的参数;它只改动数据的格式。
在扁平化像素之后,该网络包含两个 tf.keras.layers.Dense层的序列。这些层是密集连接或全连接神经层。第一个 Dense 层具有 128 个节点(或神经元)。第二个(也是最后一个)层是具有 10 个节点的 softmax 层,该层会返回一个具有 10 个概率得分的数组,这些得分的总和为 1。每个节点包含一个得分,表示当前图像属于 10 个类别中某一个的概率。

编译层:
model.compile(optimizer=tf.train.AdamOptimizer(),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

上述代码进行模型编译,由上至下为:
优化器 - 根据模型看到的数据及其损失函数更新模型的方式。
损失函数 - 衡量模型在训练期间的准确率。我们希望尽可能缩小该函数,以“引导”模型朝着正确的方向优化。
指标 - 用于监控训练和测试步骤。以下示例使用准确率,即图像被正确分类的比例。

训练模型:

要开始训练,则调用model.fit()方法,使模型与训练数据“拟合”。

评估模型:

model.evaluate()用于评估模型。

预测:

model.predict()用于预测。

基本分类测试截图如下:


TensorFlow笔记4_第1张图片
基本分类测试图1

TensorFlow笔记4_第2张图片
测试图2

教程上说,最后得出的测试结果准确率低于训练时的准确度是因为发生了过拟合。

2.文本分类

用jupyter啦,更直观一点,一步一回头哈嘿~
训练数据25000条,但是每一条数据的长度可能是不同的。
主要部分:
构建模型

# input shape is the vocabulary count used for the movie reviews (10,000 words)
vocab_size = 10000

model = keras.Sequential()
model.add(keras.layers.Embedding(vocab_size, 16))
model.add(keras.layers.GlobalAveragePooling1D())
model.add(keras.layers.Dense(16, activation=tf.nn.relu))
model.add(keras.layers.Dense(1, activation=tf.nn.sigmoid))

model.summary()

编译

model.compile(optimizer=tf.train.AdamOptimizer(),
              loss='binary_crossentropy',
              metrics=['accuracy'])

进度不怎么样。。。。
我的github

除了自渡,他人爱莫能助。

你可能感兴趣的:(TensorFlow笔记4)