區塊鏈

使用深度學習預測天氣並還原地圖


拇指1

預測天氣是一項艱鉅的任務,涉及統計和數據處理。如今,在天氣預報中,機器學習扮演著至關重要的角色。但是,在數值模型中,更常使用ML。

本文是對我所做的一個項目的解釋,該項目是使用深度學習根據今天的梯度來預測明天的最高溫度梯度的。使用的模型稱為Pix2Pix。是GAN的一個版本,用於基於其他人生成圖像(鏈接)。運作方式如下:我們輸入今天美國最高溫度梯度的圖像作為輸入,然後模型返回明天最高溫度梯度的圖像(預測)。

在談論項目,使用的數據以及訓練模型的方式之前,我們必須談論模型本身。

什麼是Pix2Pix?

Pix2Pix是稱為“通用對抗網絡”(GAN)的更通用模型的版本。在此模型中,我們有兩個網絡:生成器和鑑別器。生成器網絡必須學會精心製作偽造的圖像,以欺騙鑑別器,該任務是說圖像是真實的還是偽造的(由生成器生成)。換句話說,生成器生成新圖像,而鑑別器則將它們區別開來,這就是為什麼要這樣稱呼它們的原因。

但是,生成器如何生成新圖像?假設我們要生成花。為了做到這一點,我們必須有一個想要神經網絡生成的花朵圖像的數據集。在準備好該數據集之後,我們將基於相同的圖像生成另一個數據集,但會添加隨機噪聲。這樣一來,我們就不再有花朵,而是花朵模糊了。使用這兩個數據集,我們傳遞花的真實圖像和帶有模糊圖像的輸入。使用這兩個圖像,生成器會嘗試精心製作一幅類似於真實圖像的圖像(從嘈雜的圖像開始)。之後,將生成的圖像傳遞到鑑別器,該鑑別器將圖像分類為真實或偽造。這就是訓練模型的方式。

另外,可以注意到上述任務正在試圖相互競爭。我們可以說他們是對抗性的。這為GAN命名。

我們是數據科學家;我們想進一步了解該模型的架構。嗯,如上所述,此模型內部有兩個網絡。讓我們關注發生器。每個人都必須熟悉成交量積神經網絡(CNN)(如果不閱讀本文的話)。該模型將圖像作為輸入,並使用成交量積層對其進行處理,直到我們只有分類模型所具有的類的百分比為止。換句話說,我們從圖像傳遞到數字。我們可以使用所謂的反成交量積神經網絡(DNN)進行逆運算。它接收數字作為輸入,並給出圖像作為輸出。使用這兩個模型,我們構建了Generator。

如果你想進一步了解該模型,可以閱讀該論文。

考慮到該模型如何工作和訓練,我們將專注於我所做的項目。

使用Pix2Pix預測天氣並還原地圖

該項目是一個二合一項目,因為使用了相同的模型來預測天氣並恢復預測器輸出的圖像。更準確地說,該模型經過兩次訓練。第一個包含從NOAA的溫度寄存器生成的圖像數據集。第二個帶有圖像,第一個模型作為輸出給出。

這兩個項目將在不同的部分進行說明。

在進入兩個項目之前,有必要說明已完成的數據處理。我從NOAA(https://www.noaa.gov)獲得了3.5 GB的數據,其中收集了世界各地不同站點記錄的氣象數據。從1840年到今天,這些記錄按月分發。作為大量數據,由於有錯誤的記錄,一些與記錄的日期不匹配的記錄,因此我不得不進行大量清理。

對於清潔過程,我使用了C#。第一步是分離目標變量(最高溫度),這將數據集減少到2 GB。然後,利用來自許多氣象站的數據,我繼續對每個氣象站的經度和緯度進行繪圖,並查看在哪個區域中有更多數據(每個像素是一個站):

"天氣“圖1:1840年至2019年之間所有可用電台的K線走勢圖"天氣”圖2:1840年至2019年之間以美國為界的電台K線走勢圖。

如你所見,美國的站點最多,因此我決定將TMAX數據集限制為美國的站點。數據集減少到1.6 GB。所有這些都是使用C#完成的。下一步是按照年,月,日以及與該天相關的溫度,將測站及其緯度和經度分開。這在數據中心化生成了許多記錄,並將其提高到6 GB。該數據集被引入數據庫以更輕鬆地處理它。上傳後,使用“查詢”,我一直在清理數據集。我刪除了更多不一致的記錄,將溫度調整到合理的範圍,因為有許多溫度超過了最高記錄溫度或低於歷史最低記錄。我這樣做的原因是,那一天可能是一個不好的衡量標準,所以我將寄存器限制在52ºC和-18ºC,這是美國的歷史記錄。

一旦使用C#完成所有數據清理,就只索引了1980年至2019年的數據,並將站點給定的TMAX值通過顏色映射到一個映射表中以表示溫度梯度。最終結果如下(圖像256×256):

"天氣“圖3:夏季和冬季的示例。

兩側的彩色線是代表日期和年份的顏色代碼。水平條代表日期(1到365),垂直條代表年份。對於第一個項目,這以某種方式有助於第二天的預測。

第一個項目

第一個項目的目的是使用Pix2Pix模型根據今天的溫度圖預測明天的天氣。這樣,輸入的就是今天的地圖,而目標就是明天的地圖。

使用Pix2Pix預測天氣的主要動機是因為好奇,需要檢查用於將圖像轉換為圖像的神經網絡結構是否也可以從現有數據中推斷出新數據。也就是說,驗證模型是否可以生成真實的圖像(或至少接近它)而不是假設的圖像。

由於一次迭代的目標是下一次迭代的輸入,因此這兩個圖像都位於同一文件夾中。它們帶有一個使用以下格式標識它們的名稱:yyyymmdd-xxxxxx.png,其中後六位是數據中心化的圖像編號。

培訓完成了3200張圖像。其中的20%用於測試。

結果如下:

"天氣”圖片4:在第一個項目中獲得的結果。

從該項目得出的結論是,它生成的預測圖非常接近實際。儘管我們認為增加EPOCH並擴展訓練數據集,但結果應該更加可靠。

第二項目

在第二個項目中,給出了一個轉折,目的是使項目1的輸出看起來更類似於氣象學中使用的最高溫度的真實圖。這樣,氣候學家可以使用此模型來改進根據其數據生成的地圖。

拍攝了1000個數據集的圖像,並在Photoshop中應用了“操作”,其中對圖像進行了修飾以使其盡可能地被接受:

"天氣”圖片6:示例1"天氣”圖片7:示例2

顯然,新目標將是一個改進的圖像。

該模型訓練了1000幅圖像(20%的測試)。結果如下:

"天氣”

"天氣“

"天氣”圖片8:項目2的結果。

如我們所見,它設法以準確的方式重建圖像。毫無疑問,這對於天氣預報和地圖改進或定制中的不同應用非常有用。

這是重新創建的輸出的gif:

"天氣”圖片9:連續幾天的輸出動畫。

結論是,儘管該模型並非旨在用於這種類型的應用程序,但是該模型用於從數據推斷數據。

反過來,可以使用相同的模型來改進和調整地圖,使其更符合氣象學中使用的圖像類型。

本文顯示的所有結果都可以在該項目的GitHub存儲庫中找到

資訊來源:由0x資訊編譯自DATADRIVENINVESTOR,版權歸作者Agustin Bignu所有,未經許可,不得轉載

點擊繼續閱讀


0X簡體中文版:使用深度學習預測天氣並還原地圖