前言
由于自己只是学会了python的基础语法,而对于python的内置函数的学习还不够,因此会将在学习tensorflow过程中不明白的python新知识点给列举出来。
1.从python中学到的新知识
1.1 figure函数
plt.figure(figsize=(10,10))
figure语法说明
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num:图像编号或名称,数字为编号 ,字符串为名称
figsize:指定figure的宽和高,单位为英寸;
dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
facecolor:背景颜色
edgecolor:边框颜色
frameon:是否显示边框
1.2 imshow函数——cmap参数
plt.imshow(train_images[i], cmap=plt.cm.binary)#使用自定义的colormap
Colormap:参数cmap用于设置热图的Colormap。
Colormap是MATLAB里面用来设定和获取当前色图的函数,可以设置如下色图:
hot 从黑平滑过度到红、橙色和黄色的背景色,然后到白色。
cool 包含青绿色和品红色的阴影色。从青绿色平滑变化到品红色。
gray 返回线性灰度色图。
…
1.3 format函数
plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
100*np.max(predictions_array),
class_names[true_label]),
color=color)
运行结果:
Python format 格式化函数 教程
我的理解:
plt.xticks(range(10))#x轴的刻度内容的范围
2.Tensorflow学习笔记
(1)构建模型
构建神经网络需要先配置模型的层,然后再编译模型。
设置层
神经网络的基本组成部分是层。层会从向其馈送的数据中提取表示形式。希望这些表示形式有助于解决手头上的问题。
大多数深度学习都包括将简单的层链接在一起。大多数层(如 tf.keras.layers.Dense)都具有在训练期间才会学习的参数。
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),#展平像素
keras.layers.Dense(128, activation='relu'),#全连接神经层
keras.layers.Dense(10)
])
编译模型
在准备对模型进行训练之前,还需要再对其进行一些设置。以下内容是在模型的编译步骤中添加的:
损失函数 - 用于测量模型在训练期间的准确率。您会希望最小化此函数,以便将模型“引导”到正确的方向上。
优化器 - 决定模型如何根据其看到的数据和自身的损失函数进行更新。
指标 - 用于监控训练和测试步骤。以下示例使用了准确率,即被正确分类的图像的比率。
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
(2)向模型馈送数据
要开始训练,请调用 model.fit 方法,这样命名是因为该方法会将模型与训练数据进行“拟合”:
model.fit(train_images, train_labels, epochs=10)
在模型训练期间,会显示损失和准确率指标。此模型在训练数据上的准确率达到了 0.91(或 91%)左右。
(3)评估准确率
接下来,比较模型在测试数据集上的表现:
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nTest accuracy:', test_acc)
结果表明,模型在测试数据集上的准确率略低于训练数据集。
(4)进行预测
在模型经过训练后,您可以使用它对一些图像进行预测。模型具有线性输出,即 logits。您可以附加一个 softmax 层,将 logits 转换成更容易理解的概率。
probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])
predictions = probability_model.predict(test_images)
在上例中,模型预测了测试集中每个图像的标签。我们来看看第一个预测结果:
predictions[0]
array([6.9982241e-07, 5.5403369e-08, 1.8353174e-07, 1.4761626e-07,
2.4380807e-07, 1.9273469e-04, 1.8122660e-06, 6.5027133e-02,
1.7891599e-06, 9.3477517e-01], dtype=float32)
预测结果是一个包含 10 个数字的数组。它们代表模型对 10 种不同服装中每种服装的“置信度”。您可以看到哪个标签的置信度值最大:
np.argmax(predictions[0])