日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TensorFlow官方入门实操课程-全连接神经网络分类

發布時間:2025/4/5 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorFlow官方入门实操课程-全连接神经网络分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#設置顯卡內存使用率,根據使用率占用 import os os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true" #引入必要的庫 import tensorflow as tf print(tf.__version__) from tensorflow import keras import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns #基于matplotlib繪制圖像封裝的 import numpy as npfashion_mnist = keras.datasets.fashion_mnist #導入數據集 (train_images,train_labels),(test_images,test_labels) = fashion_mnist.load_data() #導入數據集 #顯示數據集的數據 class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] print(train_images.shape) #訓練集的數據樣子 print(len(train_images)) #訓練集的大小 print(test_images.shape) #測試集的數據樣子 print(len(test_labels)) #測試集的大小plt.figure(figsize=(5,5)) #設置繪圖區域大小 plt.imshow(train_images[0]) #把數據繪制成偽彩圖 plt.colorbar() #添加一條色帶 plt.grid(False) #繪圖區域不顯示網格 plt.show()

以下為上一段代碼輸出

model = keras.Sequential() #創建一個前向傳播模型 #輸入層,平鋪展開,28*28個參數輸入 model.add(keras.layers.Flatten(input_shape=(28,28))) #添加輸入的參數為28*28,由于fashion_mnists數據集是28*28的圖片 #中間層,使用relu激活函數 model.add(keras.layers.Dense(128,activation=tf.nn.relu)) #輸出層使用softmax做分類 model.add(keras.layers.Dense(10,activation=tf.nn.softmax))model.summary() #展示層的樣子 #第一層 28*28 = 784個參數輸入 #第二層 (784+1)*128 = 100480 那個新加的一個參數就是bias,在輸入跟中間層有,輸出層沒有 #第三層 (128+1)*10 = 1290 這是全連接的網絡結構

這里為上一段代碼的輸出

#為模型裝配優化器,損失函數 train_images = train_images/255 #歸一化變成0~1之間數 #使用Adam優化器,交叉熵損失函數 model.compile(optimizer=tf.optimizers.Adam(),loss=tf.losses.sparse_categorical_crossentropy,metrics=['accuracy']) history = model.fit(train_images,train_labels,epochs=50,validation_split=0.3,shuffle=True)

以下為上一段代碼輸出

epochs = len(history.history['loss']) #獲取X軸長度fig, axes = plt.subplots(2, sharex=True, figsize=(12, 8)) fig.suptitle('Training Metrics')axes[0].set_ylabel("Loss", fontsize=14) axes[0].set_xlabel("Epoch", fontsize=14) axes[0].plot(range(epochs),history.history['loss'], label='Loss') axes[0].plot(range(epochs),history.history['val_loss'], label='Loss') plt.legend()axes[1].set_ylabel("Accuracy(%)", fontsize=14) axes[1].set_xlabel("Epoch", fontsize=14) axes[1].plot(range(epochs),history.history['accuracy'], label='Accuracy') axes[1].plot(range(epochs),history.history['val_accuracy'], label='Val_accuracy') # plt.savefig('./epoch.jpg') # plt.suptitle('自定義圖表', fontsize=400, ha='center') # 即標題在x軸和y軸形成的方框內部,如下圖(詳細用法見下注釋)。如果需要標題在這上方,使用 plt.title(blabla) plt.legend() plt.show()

以下為loss與準確率曲線可以看出訓練過擬合了,訓練集的loss下降多,但是測試集的訓練loss增加了,訓練參數不匹配

# model.predict(test_images[10]) #輸入參數10進行數據預測 plt.figure(figsize=(5,5)) #設置繪圖區域大小 plt.imshow(test_images[10]) #把數據繪制成偽彩圖 plt.colorbar() #添加一條色帶 plt.grid(False) #繪圖區域不顯示網格 plt.show()#用測試集來評估訓練的模型 test_images_scaled = test_images/255 model.evaluate(test_images_scaled,test_labels) #評估獲得Loss與準確率predictions = model.predict(test_images) #獲取全部數據的預測類別,每一行代表這個圖片屬于那個類別,值越大,概率越大 # np.argmax(model.predict(test_images_scaled))for i, logits in enumerate(predictions):class_idx = tf.argmax(logits).numpy()p = tf.nn.softmax(logits)[class_idx] name = class_names[class_idx]print(p)print("Example {} prediction: {} ({:4.1f}%)".format(i, name, 100*p))


改成如下的輸出

#用測試集來評估訓練的模型 test_images_scaled = test_images/255 model.evaluate(test_images_scaled,test_labels) #評估獲得Loss與準確率predictions = model.predict(test_images_scaled[0].reshape(1, 28, 28)) #獲取第一個數據的各個分類概率 print(predictions) predlab = np.argmax(predictions) print(predlab)

總結

以上是生活随笔為你收集整理的TensorFlow官方入门实操课程-全连接神经网络分类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。