使用TensorFlow和Keras建立貓狗圖片深度學習分類器
在本文中,我們將使用TensorFlow和Keras建立一個影像分類器,可以區分貓和狗的影像。為了做到這一點,我們將使用TensorFlow資料集中的cats_vs_dogs資料集。該資料集由25000張打過標籤的貓狗的圖像組成,其中80%的圖像用於訓練,10%用於驗證,10%用於測試。
載入資料
我們從使用TensorFlow Datasets載入資料集開始。將資料集拆分為訓練集、驗證集和測試集,分別佔資料的80%、10%和10%,並定義一個函數來顯示資料集中的一些樣本影像。
<code>import tensorflow as tfimport matplotlib.pyplot as pltimport tensorflow_datasets as tfds# 加载数据(train_data, validation_data, test_data), info = tfds.load('cats_vs_dogs', split=['train[:80%]', 'train[80%:90%]', 'train[90%:]'], with_info=True, as_supervised=True)# 获取图像的标签label_names = info.features['label'].names# 定义一个函数来显示一些样本图像plt.figure(figsize=(10, 10))for i, (image, label) in enumerate(train_data.take(9)):ax = plt.subplot(3, 3, i + 1)plt.imshow(image)plt.title(label_names[label])plt.axis('off')</code>
#預處理資料
在訓練模型之前,需要先對資料進行預處理。將把圖片的大小調整為150x150像素的統一尺寸,將像素值歸一化為0和1之間,並對資料進行批次處理,這樣就可以將其分批導入模型中。
<code>IMG_SIZE = 150</code>
<code>def format_image(image, label):image = tf.cast(image, tf.float32) / 255.0# Normalize the pixel valuesimage = tf.image.resize(image, (IMG_SIZE, IMG_SIZE))# Resize to the desired sizereturn image, labelbatch_size = 32train_data = train_data.map(format_image).shuffle(1000).batch(batch_size)validation_data = validation_data.map(format_image).batch(batch_size)test_data = test_data.map(format_image).batch(batch_size)</code>
建立模型
#本文將使用預先訓練好的MobileNet V2模型作為基礎模型,並在其中添加一個全局平均池化層和一個緊密層來進行分類。本文將凍結基礎模型的權重,以便在訓練期間只更新頂層的權重。
<code>base_model = tf.keras.applications.MobileNetV2(input_shape=(IMG_SIZE, IMG_SIZE, 3), include_top=False, weights='imagenet')base_model.trainable = False</code>
<code>global_average_layer = tf.keras.layers.GlobalAveragePooling2D()prediction_layer = tf.keras.layers.Dense(1)model = tf.keras.Sequential([base_model,global_average_layer,prediction_layer])model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=0.0001),loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),metrics=['accuracy'])</code>
訓練模型
本文將對模型進行3個週期的訓練,並在每個週期之後在驗證集上對其進行驗證。我們將在訓練後保存模型,這樣我們就可以在以後的測試中使用它。
<code>global_average_layer = tf.keras.layers.GlobalAveragePooling2D()prediction_layer = tf.keras.layers.Dense(1)model = tf.keras.Sequential([base_model,global_average_layer,prediction_layer])model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=0.0001),loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),metrics=['accuracy'])</code>
<code>history = model.fit(train_data,epochs=3,validation_data=validation_data)</code>
模型歷史
如果想知道Mobilenet V2層是如何運作的,如下圖所示是該層的一個結果。
評估模型
#訓練完成後將在測試集上評估模型,看看它在新數據上的表現如何。
<code>loaded_model = tf.keras.models.load_model('cats_vs_dogs.h5')test_loss, test_accuracy = loaded_model.evaluate(test_data)</code>
<code>print('Test accuracy:', test_accuracy)</code>
進行預測
最後,本文將使用該模型對測試集中的一些樣本影像進行預測,並顯示結果。
<code>for image , _ in test_.take(90) : passpre = loaded_model.predict(image)plt.figure(figsize = (10 , 10))j = Nonefor value in enumerate(pre) : plt.subplot(7,7,value[0]+1)plt.imshow(image[value[0]])plt.xticks([])plt.yticks([])if value[1] > pre.mean() :j = 1color = 'blue' if j == _[value[0]] else 'red'plt.title('dog' , color = color)else : j = 0color = 'blue' if j == _[value[0]] else 'red'plt.title('cat' , color = color)plt.show()</code>
大功告成!我們透過使用TensorFlow和Keras創建了一個影像分類器,可以區分貓和狗的影像。透過一些調整和微調,也可以將這種方法應用於其他影像分類問題。
以上是使用TensorFlow和Keras建立貓狗圖片深度學習分類器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

激活函數在深度學習中扮演著至關重要的角色,它們能夠為神經網路引入非線性特性,使得網路能夠更好地學習並模擬複雜的輸入輸出關係。正確選擇和使用激活函數對於神經網路的性能和訓練效果有著重要的影響本文將介紹四種常用的激活函數:Sigmoid、Tanh、ReLU和Softmax,從簡介、使用場景、優點、缺點和優化方案五個維度進行探討,為您提供關於激活函數的全面理解。 1.Sigmoid函數SIgmoid函數公式簡介:Sigmoid函數是常用的非線性函數,可以將任何實數映射到0到1之間。它通常用於將不歸一

BERT是由Google在2018年提出的一種預先訓練的深度學習語言模式。全稱為BidirectionalEncoderRepresentationsfromTransformers,它基於Transformer架構,具有雙向編碼的特性。相較於傳統的單向編碼模型,BERT在處理文字時能夠同時考慮上下文的訊息,因此在自然語言處理任務中表現出色。它的雙向性使得BERT能夠更好地理解句子中的語義關係,從而提高了模型的表達能力。透過預訓練和微調的方法,BERT可以用於各種自然語言處理任務,如情緒分析、命名

潛在空間嵌入(LatentSpaceEmbedding)是將高維度資料對應到低維度空間的過程。在機器學習和深度學習領域中,潛在空間嵌入通常是透過神經網路模型將高維輸入資料映射為一組低維向量表示,這組向量通常被稱為「潛在向量」或「潛在編碼」。潛在空間嵌入的目的是捕捉資料中的重要特徵,並將其表示為更簡潔和可理解的形式。透過潛在空間嵌入,我們可以在低維空間中對資料進行視覺化、分類、聚類等操作,從而更好地理解和利用資料。潛在空間嵌入在許多領域中都有廣泛的應用,如影像生成、特徵提取、降維等。潛在空間嵌入的主要

寫在前面今天我們探討下深度學習技術如何改善在複雜環境中基於視覺的SLAM(同時定位與地圖建構)表現。透過將深度特徵提取和深度匹配方法相結合,這裡介紹了一種多功能的混合視覺SLAM系統,旨在提高在諸如低光條件、動態光照、弱紋理區域和嚴重抖動等挑戰性場景中的適應性。我們的系統支援多種模式,包括拓展單目、立體、單目-慣性以及立體-慣性配置。除此之外,也分析如何將視覺SLAM與深度學習方法結合,以啟發其他研究。透過在公共資料集和自採樣資料上的廣泛實驗,展示了SL-SLAM在定位精度和追蹤魯棒性方面優

自2006年深度學習概念被提出以來,20年快過去了,深度學習作為人工智慧領域的一場革命,已經催生了許多具有影響力的演算法。那麼,你所認為深度學習的top10演算法有哪些呢?以下是我心目中深度學習的頂尖演算法,它們在創新、應用價值和影響力方面都佔有重要地位。 1.深度神經網路(DNN)背景:深度神經網路(DNN)也叫多層感知機,是最普遍的深度學習演算法,發明之初由於算力瓶頸而飽受質疑,直到近些年算力、數據的爆發才迎來突破。 DNN是一種神經網路模型,它包含多個隱藏層。在該模型中,每一層將輸入傳遞給下一層,並

在當今科技日新月異的浪潮中,人工智慧(ArtificialIntelligence,AI)、機器學習(MachineLearning,ML)與深度學習(DeepLearning,DL)如同璀璨星辰,引領著資訊科技的新浪潮。這三個詞彙經常出現在各種前沿討論和實際應用中,但對於許多初涉此領域的探索者來說,它們的具體含義及相互之間的內在聯繫可能仍籠罩著一層神秘面紗。那讓我們先來看看這張圖。可以看出,深度學習、機器學習和人工智慧之間存在著緊密的關聯和遞進關係。深度學習是機器學習的一個特定領域,而機器學習

1.引言向量檢索已成為現代搜尋和推薦系統的核心組件。透過將複雜的物件(例如文字、圖像或聲音)轉換為數值向量,並在多維空間中進行相似性搜索,它能夠實現高效的查詢匹配和推薦。從基礎到實踐,回顧Elasticsearch向量檢索發展史_elasticsearchElasticsearch作為一款流行的開源搜尋引擎,在向量檢索方面的發展也一直備受關注。本文將回顧Elasticsearch向量檢索的發展歷史,重點介紹各階段的特性與進展。以史為鑑,方便大家建立起Elasticsearch向量檢索的全量

编辑|萝卜皮自2021年发布强大的AlphaFold2以来,科学家们一直在使用蛋白质结构预测模型来绘制细胞内各种蛋白质结构的图谱、发现药物,并绘制每种已知蛋白质相互作用的「宇宙图」。就在刚刚,GoogleDeepMind发布了AlphaFold3模型,该模型能够对包括蛋白质、核酸、小分子、离子和修饰残基在内的复合物进行联合结构预测。AlphaFold3的准确性对比过去许多专用工具(蛋白质-配体相互作用、蛋白质-核酸相互作用、抗体-抗原预测)有显著提高。这表明,在单个统一的深度学习框架内,可以实现
