MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)

人工神经网络(2)

小批量梯度下降法

MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第1张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第2张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第3张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第4张图片

梯度下降法的优化

MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第5张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第6张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第7张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第8张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第9张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第10张图片

keras和tf.keras

MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第11张图片

Sequential模型

MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第12张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第13张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第14张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第15张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第16张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第17张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第18张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第19张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第20张图片
history属性:
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第21张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第22张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第23张图片

Sequential模型实现手写数字识别

MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第24张图片
可运行:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import tensorflow.keras

mnist = tf.keras.datasets.mnist
(train_x,train_y),(test_x,test_y)=mnist.load_data()
print(train_x.shape)
print(train_y.shape)
print(test_x.shape)
print(test_y.shape)

#数据预处理
X_train,X_test=tf.cast(train_x/255.0,tf.float32),tf.cast(test_x/255.0,tf.float32)
y_train,y_test=tf.cast(train_y,tf.int16),tf.cast(test_y,tf.int16)
#建立模型
model = tf.keras.Sequential()
#将输入的图像二维向量转换为一维向量
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
#中间的隐藏层为全连接层,有128个节点,使用relu激活函数
model.add(tf.keras.layers.Dense(128,activation="relu"))
#输出层使用全连接层,有10个节点,使用softmax激活函数
model.add(tf.keras.layers.Dense(10,activation="softmax"))
print(model.summary())
#配置训练方法
model.compile(optimizer='adam',
              #稀疏交叉熵损失函数
              loss='sparse_categorical_crossentropy',
              #稀疏分类准确率函数
              metrics=['sparse_categorical_accuracy']
              )
#训练模型  validation_split抽取20%的数据作为测试数据
model.fit(X_train,y_train,batch_size=64,epochs=5,validation_split=0.2)
#评估模型
model.evaluate(X_test,y_test,verbose=2)

plt.axis("off")
plt.imshow(test_x[0],cmap="gray")
plt.show()
print(y_test[0])
#模型的使用
print(np.argmax(model.predict(X_test[0:1]),axis=1))
#测试集中前4个数据集
for i in range(4):
    plt.subplot(1,4,i+1)
    plt.axis("off")
    plt.imshow(test_x[i],cmap='gray')
    plt.title(test_y[i])
plt.show()
y_pred=np.argmax(model.predict(X_test[0:4]),axis=1)

for i in range(4):
    plt.subplot(1,4,i+1)
    plt.axis("off")
    plt.imshow(test_x[i],cmap='gray')
    plt.title("y="+str(test_y[i])+"\ny_pred="+str(y_pred[i]))
plt.show()

#随机预测4个
for i in range(4):
    num = np.random.randint(1,10000)
    plt.subplot(1,4,i+1)
    plt.axis("off")
    plt.imshow(test_x[num],cmap='gray')
    y_pred=np.argmax(model.predict(X_test[num:num+1]),axis=1)
    title="y="+str(test_y[num])+"\ny_pred="+str(y_pred)
    plt.title(title)
plt.show()

模型的保存和加载

MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第25张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第26张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第27张图片
MOOC网神经网络与深度学习TensorFlow实践7——人工神经网络(2)_第28张图片

model.save_weights("mnist_weights.h5")
model.save("mnist_model.h5")


model.load_weights("mnist_weights.h5")
print(model.evaluate(X_test,y_test,verbose=2))
#加载数据,对数据归一化后直接使用下面语句即可加载模型
#model=tf.keras.models.load_model("mnist_model.h5")

你可能感兴趣的:(tensorflow)