国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        如何使用python+pandas+tensorflow實現Covid新冠病毒檢測

        2021-08-03 09:12
        磐創AI
        關注

        介紹

        Covid 是一種致命的疾病,會影響呼吸系統。檢測一個人是否患有新冠病毒非常重要。在本博客中,我們將確定一個人是否患有新冠肺炎。

        輸入

        讓我們導入執行任務所需的工具。

        import pandas as pd
        import numpy as np
        from keras.preprocessing.image import ImageDataGenerator
        from tensorflow.keras.applications import ResNet50
        from tensorflow.python.keras.models import Sequential
        from tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2D
        from tensorflow.keras.applications import ResNet50
        import tensorflow as tf
        import matplotlib.pyplot as plt
        讀取數據

        train_data=pd.read_csv("Training_set_covid.csv")
        print(train_data)

        由于我們只有圖像文件的名稱和它們的標簽,讓我們添加一個由它們的文件路徑組成的列。我們可以使用 ImageDataGenerator 加載圖像。train_data["filepath"]="train/"+train_data["filename"]
        print(train_data)

        我已經用“file-path”替換了實際的文件路徑。
        數據增強由于我們的數據很少,我正在擴充我的數據并創建一個變量來存儲訓練和驗證圖像train_datagen=ImageDataGenerator(validation_split=0.2,zoom_range=0.2,rescale=1./255.,horizontal_flip=True)
        在這里,我們將縮放范圍設置為 0.2,并將圖像重新縮放為 1/255 大小,并制作了訓練圖像的 20% 的驗證集。train_data["label"]=train_data["label"].astype(str)
        上面的代碼會將我們的 int 標簽轉換為字符串類型。

        加載圖像

        train_images=train_datagen.flow_from_dataframe(train_data,x_col="filepath",batch_size=8,target_size=(255,255),class_mode="binary",shuffle=True,subset='training',y_col="label")
        valid_images=train_datagen.flow_from_dataframe(train_data,x_col="filepath",batch_size=8,target_size=(255,255),class_mode="binary",shuffle=True,subset='validation',y_col="label")
        在這里,我們創建了 2 個數據流、1 個訓練集和另一個驗證集。為此我們設置了一些參數。參數如:Batch Size –> 8Target Size (Image size) –> (255,255)Shuffle –> TrueClass Mode –> Binary由于我們只有 2 個目標屬性,因此我們設置了類模式 Binary。Resnet50 將 (255,255) 作為輸入形狀,因此我們的圖像大小為 (255,255)。Shuffle 設置為 True,以足夠好地對圖像進行打亂,以便兩個集合都有不同的圖像。RESNET50讓我們加載我們的 ResNet50 模型。但在進入代碼路徑之前,請了解 ResNet50 是什么以及它是如何工作的。base_model = ResNet50(input_shape=(225, 225,3), include_top=False, weights="imagenet")
        for layer in base_model.layers:
           layer.trainable = False
        base_model = Sequential()
        base_model.add(ResNet50(include_top=False, weights='imagenet', pooling='max'))
        base_model.add(Dense(1, activation='sigmoid'))
        base_model.compile(optimizer = tf.keras.optimizers.SGD(lr=0.0001), loss = 'binary_crossentropy', metrics = ['acc'])
        base_model.summary()
        讓我們理解這個代碼塊。首先,我們將使用我們的輸入形狀和權重加載一個基本模型。在這里,我們使用了image-net權重。我們已經移除了頂部,因為我們將添加我們的輸出層。然后,我們將所有基礎模型層設置為不可訓練,因為我們不想覆蓋加載時導入的權重。現在,我們正在創建我們的基礎模型,我們添加一個 50 個單元的 Dense 層來創建一個全連接層,該層連接到我們的輸出密集層,具有 1 個單元和 Sigmoid 作為激活函數。然后我們用 SGD 優化器和一些微調和二進制交叉熵作為損失函數編譯它。這是我們的模型的外觀:Model: "sequential_1"
        _________________________________________________________________
        Layer (type)                 Output Shape              Param #  
        =================================================================
        resnet50 (Functional)        (None, 2048)              23587712  
        _________________________________________________________________
        dense_1 (Dense)              (None, 1)                 2049      
        =================================================================
        Total params: 23,589,761
        Trainable params: 23,536,641
        Non-trainable params: 53,120
        _________________________________________________________________
        訓練resnet_history = base_model.fit(train_images, validation_data = valid_images, steps_per_epoch =int(train_images.n/8), epochs = 20)
        讓我們用驗證集訓練我們的模型,訓練圖像并驗證它們。有 20 個 epoch,每個 epoch 的步數設置為訓練樣本數/8 以進行平衡,批量大小為 8。Epoch 1/20
        348/348 [==============================] - 162s 453ms/step - loss: 0.7703 - acc: 0.8588 - val_loss: 1.2608 - val_acc: 0.8791
        Epoch 2/20
        348/348 [==============================] - 84s 242ms/step - loss: 0.3550 - acc: 0.9198 - val_loss: 2.8488 - val_acc: 0.4518
        Epoch 3/20
        348/348 [==============================] - 84s 241ms/step - loss: 0.3501 - acc: 0.9229 - val_loss: 1.0196 - val_acc: 0.7007
        Epoch 4/20
        348/348 [==============================] - 84s 241ms/step - loss: 0.3151 - acc: 0.9207 - val_loss: 0.5498 - val_acc: 0.8633
        Epoch 5/20
        348/348 [==============================] - 85s 245ms/step - loss: 0.2376 - acc: 0.9281 - val_loss: 0.4247 - val_acc: 0.9094
        Epoch 6/20
        348/348 [==============================] - 86s 246ms/step - loss: 0.2273 - acc: 0.9248 - val_loss: 0.3911 - val_acc: 0.8978
        Epoch 7/20
        348/348 [==============================] - 86s 248ms/step - loss: 0.2166 - acc: 0.9319 - val_loss: 0.2936 - val_acc: 0.9295
        Epoch 8/20
        348/348 [==============================] - 87s 251ms/step - loss: 0.2016 - acc: 0.9389 - val_loss: 0.3025 - val_acc: 0.9281
        Epoch 9/20
        348/348 [==============================] - 87s 249ms/step - loss: 0.1557 - acc: 0.9516 - val_loss: 0.2762 - val_acc: 0.9281
        Epoch 10/20
        348/348 [==============================] - 85s 243ms/step - loss: 0.1802 - acc: 0.9418 - val_loss: 0.3382 - val_acc: 0.9353
        Epoch 11/20
        348/348 [==============================] - 84s 242ms/step - loss: 0.1430 - acc: 0.9586 - val_loss: 0.3222 - val_acc: 0.9324
        Epoch 12/20
        348/348 [==============================] - 85s 243ms/step - loss: 0.0977 - acc: 0.9695 - val_loss: 0.2110 - val_acc: 0.9410
        Epoch 13/20
        348/348 [==============================] - 85s 245ms/step - loss: 0.1227 - acc: 0.9572 - val_loss: 0.2738 - val_acc: 0.9281
        Epoch 14/20
        348/348 [==============================] - 86s 246ms/step - loss: 0.1396 - acc: 0.9558 - val_loss: 0.2508 - val_acc: 0.9439
        Epoch 15/20
        348/348 [==============================] - 86s 247ms/step - loss: 0.1173 - acc: 0.9578 - val_loss: 0.2025 - val_acc: 0.9381
        Epoch 16/20
        348/348 [==============================] - 86s 246ms/step - loss: 0.1038 - acc: 0.9604 - val_loss: 0.2658 - val_acc: 0.9439
        Epoch 17/20
        348/348 [==============================] - 86s 247ms/step - loss: 0.0881 - acc: 0.9707 - val_loss: 0.2997 - val_acc: 0.9309
        Epoch 18/20
        348/348 [==============================] - 87s 249ms/step - loss: 0.1036 - acc: 0.9627 - val_loss: 0.2527 - val_acc: 0.9367
        Epoch 19/20
        348/348 [==============================] - 87s 251ms/step - loss: 0.0848 - acc: 0.9736 - val_loss: 0.2461 - val_acc: 0.9439
        Epoch 20/20
        348/348 [==============================] - 87s 250ms/step - loss: 0.0742 - acc: 0.9736 - val_loss: 0.2483 - val_acc: 0.9439
        我們有很好的結果。讓我們看看它的圖表。性能圖精度圖plt.plot(resnet_history.history["acc"],label="train")
        plt.plot(resnet_history.history["val_acc"],label="val")
        plt.title("Training Accuracy and Validation Accuracy")
        plt.legend()

        我們有很好的訓練和驗證準確性。損失plt.plot(resnet_history.history["loss"],label="train")
        plt.plot(resnet_history.history["val_loss"],label="val")
        plt.title("Training Loss and Validation Loss")
        plt.legend()

        而且損失少。結論即使如此少的數據,ResNet50 也給出了令人滿意的結果。

        image.png


        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 91你懂的| 欧美第3页| 阿拉善盟| 亚洲成人视屏| 亚洲图片视频丝袜| 夜夜嗨AV一区二区三区网页| 91成人视频在线观看| www.youjizz日本| 精品久热| 宝兴县| 中文无码人妻少妇| 夜夜国自一区| 亚洲国产| 91乱子伦国产乱子伦海的味道| 一本大道东京热av无码| 波多野结衣AV一区| 欧美啊v| 国产精品第八页| 大新县| 69精品人人人人| 熟久久| 石林| 永久免费看mv亚洲| 亚洲精品乱码久久久久久蜜桃91| 亚洲男人天堂网| 蓝田县| 亚洲色涩| 定兴县| 亚洲国产熟女第一页| 69久蜜桃人妻无码精品一区| 崇明县| 综合一区二区三区| 美女88av| 南城县| 愛爱视频在线3| 日韩?欧美?国产| 影音先锋资源在线| 青青av| 野花社区日本免费图片| 国产19p| 欧美在线视频99|