徹底改變時尚:使用 GAN 實現 AI 的未來

徹底改變時尚:使用 GAN 實現 AI 的未來

一、介紹

????????想象一下,在這個世界里,時裝設計師永遠不會用完新想法,我們穿的每一件衣服都是一件藝術品。聽起來很有趣,對吧?好吧,我們可以在通用對抗網絡 (GAN)?的幫助下在現實中實現這一目標。GAN模糊了現實與想象之間的界限。它就像一個瓶子里的精靈,滿足了我們所有的創造性愿望。我們甚至可以在GAN的幫助下在地球上創造一個太陽,這在現實生活中是不可能的。

????????早在 2010 年代,Lan Goodfellow 和他的同事就引入了這個框架。他們實際上旨在解決無監督學習的挑戰,即模型從未標記的數據中學習并生成新樣本。GAN 憑借其制作引人入勝和栩栩如生的內容的能力徹底改變了許多行業,而時尚行業正在引領這一潛力。現在我們將探索 GAN 的潛力并了解它們是如何神奇地工作的。

學習目標
  • 關于生成對抗網絡 (GAN) 和 GAN 的工作原理。
  • GAN在ML和AI領域的作用
  • 我們還將看到使用GAN的一些挑戰及其未來潛力
  • 了解 GAN 的力量和潛力
  • 最后,在MNIST時尚數據集上實現GANs

本文是作為數據科學博客馬拉松的一部分發表的。

二、內容提要--生成對抗網絡(GAN)

????????生成對抗網絡是一類機器學習模型,用于生成新的現實數據。它可以生成高度逼真的圖像、視頻等等。它只包含兩個神經網絡:生成器和鑒別器。

2.1 發電機

????????生成器是一種卷積神經網絡,它生成鑒別器無法區分的數據樣本。在這里,generator學習如何從噪聲中創建數據。它總是試圖愚弄鑒別器。

2.2 鑒別器

????????鑒別器是一種反卷積神經網絡,它試圖正確分類生成器生成的真實樣本和虛假樣本。鑒別器獲取生成器生成的真實和虛假數據,并學習將其與真實數據區分開來。鑒別器將給出一個介于 0 和 1 之間的分數作為生成圖像的輸出。這里 0 表示圖像是假的,1 表示圖像是真實的。

2.3 對抗性訓練

????????訓練過程包括生成虛假數據,鑒別器試圖正確識別它。它涉及兩個階段:生成器訓練和鑒別器訓練。它還涉及優化生成器和鑒別器。生成器的目標是生成無法與真實數據區分開來的數據,而鑒別器的目標是識別真實和虛假數據。如果兩個網絡都正常工作,那么我們可以說模型是優化的。它們都是使用反向傳播進行訓練的。因此,每當發生錯誤時,它都會傳播回來,并且它們將更新其權重。

2.4 GAN的訓練通常包括以下步驟:

  • 定義問題陳述
  • 選擇架構
  • 在真實數據上訓練鑒別器
  • 為生成器生成虛假輸入
  • 在虛假數據上訓練鑒別器
  • 帶有鑒別器輸出的列車生成器
  • 迭代和優化

來源: IBM Developer

2.5 損失函數

????????GAN中使用的損失函數由兩個組件組成,因為我們在其架構中有兩個網絡。在這種情況下,生成器的損失取決于它生成鑒別器無法區分的真實數據的能力。它總是試圖將鑒別器的能力降到最低。另一方面,鑒別器的損失取決于它對真實和虛假樣本的分類能力。它試圖最大限度地減少錯誤分類。

????????在訓練期間,生成器和鑒別器交替更新。在這里,兩者都試圖將損失降到最低。生成器試圖通過為鑒別器生成更好的樣本來減少其損失,而鑒別器則試圖通過準確分類假樣本和真實樣本來減少其損失。此過程一直持續到GAN達到所需的收斂水平。

三、GAN在機器學習和人工智能中的作用

????????由于其生成新真實數據的能力,GAN在機器學習和人工智能領域變得越來越重要。這有多種應用,如視頻生成、圖像生成、文本到圖像合成等。這些徹底改變了許多行業。讓我們看看 GAN 在這個領域很重要的一些原因。

  1. 數據生成:我們知道,數據是構建模型最重要的東西。我們需要大量的數據集來訓練和構建更好的模型。有時數據稀缺,或者數據昂貴。在這種情況下,GAN可用于使用現有數據生成更多新數據。
  2. 數據隱私:有時我們需要使用數據來訓練模型,但這可能會影響個人的隱私。在這種情況下,我們可以使用 GAN 創建與原始數據類似的數據,并訓練模型以保護個人隱私。
  3. 逼真的模擬:這些可以創建對真實世界情況的準確模擬,并可用于創建機器學習模型。例如,由于在現實世界中測試機器人可能存在風險或昂貴,因此我們可以利用它們來測試機器人。
  4. 對抗性攻擊:?GAN 可用于創建對抗性攻擊,以測試機器學習模型的魯棒性。它有助于識別漏洞,有助于開發更好的模型,并提高安全性。
  5. 創意應用:?GAN 可用于為 AI 生成創意應用程序。它們可用于創建游戲、音樂、藝術品、電影、動畫、照片等等。此外,它還可以產生原創作品,如故事、詩歌等。

來源:無聊熊貓

隨著對GANs的研究仍在繼續,我們可以期待這項技術在未來創造更多的奇跡。

四、挑戰和局限性

盡管 GAN 已經顯示出它們生成真實和多樣化數據的能力,但它仍然存在一些需要考慮的挑戰和局限性。讓我們看看GAN的一些挑戰和局限性。

  • GAN非常依賴于訓練數據。生成的數據基于用于訓練的數據。這些將生成類似于訓練數據的數據。如果它的多樣性有限,那么 GAN 也會生成多樣性和質量有限的數據。
  • 訓練 GAN 很困難,因為它們對網絡架構和所用超參數的選擇高度敏感。這些容易導致訓練不穩定,因為生成器和鑒別器可能會陷入相互欺騙的循環中。這會導致收斂性差,從而產生質量差的樣本。
  • 如果生成器非常擅長區分真假樣本,那么生成器將能夠生成可以欺騙鑒別器進行區分的樣本。這導致產生彼此高度相似的樣本,并且它將能夠生成涵蓋數據集中所有可能性的樣本。
  • 訓練 GAN 也很昂貴。訓練 GAN 的計算成本可能很高,尤其是在處理大型數據集和復雜架構時。
  • GANs最令人擔憂的挑戰之一是創建逼真的虛假數據對社會的影響。這可能會導致隱私問題、偏見或濫用。例如,這些可能會生成虛假圖像或視頻,從而導致錯誤信息和欺詐。

五、未來潛力

盡管它有一些挑戰和局限性,但 GAN 有一個潛在的光明未來。包括醫療保健、金融和娛樂在內的眾多行業預計將因 GAN 而經歷一場革命。

  • 其潛在發展之一將是生成醫學。它可以為他們生成個性化的醫學圖像和治療計劃。在這些GAN的幫助下,即使是醫生也可以通過開發更有效的治療方法來更好地治療患者。
  • 它可以用來創建虛擬現實環境。這些非常逼真,有很多應用,比如娛樂。
  • 使用 GAN,我們可以創建更逼真的模擬環境,用于測試自動駕駛汽車。這樣我們就可以開發更安全、更有效的自動駕駛汽車。
  • 這些不僅限于與圖像相關的任務。它們也可用于自然語言處理(NLP)任務。其中包括文本生成、翻譯等等。他們可以生成與上下文相關的文本,這是構建虛擬助手和聊天機器人的必要條件。
  • 這對建筑師非常有幫助。它可以為建筑物或任何其他結構生成新的設計。這非常有助于建筑師和設計師創造更具創新性的設計。
  • 它也可以用于科學研究,因為它可以生成可以模仿現實世界現象的數據。他們可以創建合成數據,用于科學研究中的測試和驗證,幫助藥物開發和分子設計,并模擬復雜的物理過程。
  • GANs也可用于犯罪調查。例如,我們可以使用嫌疑人的身份創建嫌疑人的圖像。這樣可以更快、更成功地進行調查。

六、時尚MNIST數據集

它是機器學習中用于各種目的的流行數據集。它是原始 MNIST 數據集的替代品,該數據集包含從 0 到 9 的數字。在我們的時尚MNIST數據集中,我們有各種時尚單品的圖像,而不是數字。該數據集包含70000張圖像,其中60000張為訓練圖像,10000張為測試圖像。它們中的每一個都是灰度的,像素為 28 x 28 像素。時尚 MNIST 數據集包含 10 類時尚商品。他們是:

  1. 體恤衫
  2. 連衣裙
  3. 外套
  4. 套衫
  5. 襯衫
  6. 褲子
  7. 涼鞋
  8. 運動鞋
  9. 踝靴

資料來源:ResearchGate

最初,創建此數據集是為了開發用于分類的機器學習模型。該數據集甚至被用作評估許多機器學習算法的基準。該數據集易于訪問,可以從各種來源下載,包括 Tensorflow 和 PyTorch 庫。與原始數字MINIST數據集相比,它更具挑戰性。模特必須能夠區分可能具有相似形狀或圖案的各種時尚產品。這使得它適用于測試各種算法的魯棒性。

七、GAN在時尚行業的應用

由于 GAN,時尚行業經歷了巨大的轉變,它使創造力和變革成為可能。我們設計、生產和體驗時尚的方式已經被 GAN 徹底改變了。讓我們看看通用對抗網絡(GAN)在時尚行業中的一些實際應用。

  • 時裝設計與生成:GAN能夠產生新的設計和新的時尚概念。這有助于設計師創造創新和有吸引力的風格。使用 GAN 可以探索各種組合、圖案和顏色。例如,服裝店 H&M 使用 GAN 為其產品開發新鮮服裝。
  • 虛擬試妝:虛擬試妝是一個虛擬試用室。在這種情況下,GAN可以生成更逼真的客戶服裝圖像。因此,客戶實際上可以知道他們穿著這些衣服的樣子,而無需實際穿著它們。

來源: Augray

  • 時尚預測:GAN 也用于預測。他們可以在未來產生時尚趨勢。這有助于時尚品牌產生新的風格并緊跟潮流。
  • 織物和紋理合成:GANs通過虛擬試驗各種材料和圖案,幫助設計師生成高分辨率的織物紋理,而無需實際試驗它們。這有助于節省大量時間和資源,也有助于創新設計流程。

八、時尚 MNIST 數據集的實現

????????我們現在將使用生成對抗網絡 (GAN) 使用 MNIST 時尚數據集生成時尚樣本。首先導入所有必要的庫。

import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import Input
from tensorflow.keras.layers import Reshape
from tensorflow.keras.layers import Dropout
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import BatchNormalization
from tensorflow.keras.layers import Activation
from tensorflow.keras.layers import ZeroPadding2D
from tensorflow.keras.layers import LeakyReLU
from tensorflow.keras.layers import UpSampling2D
from tensorflow.keras.layers import Conv2Dfrom tensorflow.keras.models import Sequential 
from tensorflow.keras.models import Modelfrom tensorflow.keras.optimizers import Adam
import matplotlib.pyplot as plt
import sys

????????我們必須加載數據集。在這里,我們使用的是時尚MNIST數據集。這是 tensorflow 中的內置數據集。因此,我們可以使用 tensorflow keras 直接加載它。該數據集基本上用于分類任務。如前所述,它具有 28 x 28 像素的灰度圖像。我們只需要一組訓練數據。因此,我們將它分為訓練數據集和測試數據集,并僅加載訓練集。

????????然后,加載的數據在 -1 和 1 之間歸一化。我們通常會進行歸一化,以提高深度學習模型在訓練過程中的穩定性和收斂性。這是大多數深度學習任務中的常見步驟。最后,我們將向數據數組添加一個額外的維度。因為我們需要匹配生成器的預期輸入形狀。生成器需要一個 4D 張量。它表示批處理大小、高度、寬度和通道數。

# Load fashion dataset
(X_train, _), (_, _) = tf.keras.datasets.fashion_mnist.load_data()
X_train = X_train / 127.5 - 1.
X_train = np.expand_dims(X_train, axis=3)

設置發生器和鑒別器的尺寸。這里gen_input_dim是生成器輸入的大小,在下一行中,定義生成器生成的圖像的形狀。這里是 28 x 28 和灰度,因為我們只提供一個通道。

gen_input_dim = 100
img_shape = (28, 28, 1)

8.1 定義生成器模型

????????現在我們將定義生成器模型。它只需要一個參數,那就是輸入維度。它使用 keras 順序 API 來構建模型。它有三個完全連接的層,具有 LeakyReLU 激活函數和批量歸一化。在最后一層中,它使用tanh激活函數來生成最終的輸出圖像。最后,它返回一個 keras 模型對象,該對象將噪聲向量作為輸入,并給出生成的圖像作為輸出。

def build_generator(input_dim):model = Sequential()model.add(Dense(256, input_dim=input_dim))model.add(LeakyReLU(alpha=0.2))model.add(BatchNormalization(momentum=0.8))model.add(Dense(512))model.add(LeakyReLU(alpha=0.2))model.add(BatchNormalization(momentum=0.8))model.add(Dense(1024))model.add(LeakyReLU(alpha=0.2))model.add(BatchNormalization(momentum=0.8))model.add(Dense(np.prod(img_shape), activation='tanh'))model.add(Reshape(img_shape))noise = Input(shape=(input_dim,))img = model(noise)return Model(noise, img)

8.2 定義判別器模型

下一步是構建鑒別器。它幾乎與發生器模型相似,但在這里它只有兩個完全連接的層,并且最后一層具有 sigmoid 激活函數。它通過將噪聲向量作為輸入返回模型對象作為輸出,并輸出圖像為實數的概率。

def build_discriminator(img_shape):model = Sequential()model.add(Flatten(input_shape=img_shape))model.add(Dense(512))model.add(LeakyReLU(alpha=0.2))model.add(Dense(256))model.add(LeakyReLU(alpha=0.2))model.add(Dense(1, activation='sigmoid'))img = Input(shape=img_shape)validity = model(img)return Model(img, validity)

8.3 編譯模型

????????現在我們必須編譯它們。我們使用二進制交叉熵損失和 Adam 優化器來編譯判別器和生成器。我們將學習率設置為 0.0002,將衰減率設置為 0.5。使用二元交叉熵損失函數構建和編譯鑒別器模型,該函數常用于二元分類任務。還定義了準確性指標來評估鑒別器。

????????同樣,構建了一個生成器模型,用于創建生成器的體系結構。在這里,我們不會像為鑒別器那樣編譯生成器。它將以對抗性的方式對歧視者進行訓練。z 是表示發生器隨機噪聲的輸入層。生成器將 z 作為輸入并生成 img 作為輸出。在組合模型的訓練過程中,鑒別器的權重被凍結。生成器的輸出將被饋送到鑒別器并生成有效性,從而測量生成圖像的質量。然后,使用 z 作為輸入,使用 validity 作為輸出來創建組合模型。這用于訓練生成器。

optimizer = Adam(0.0002, 0.5)
discriminator = build_discriminator(img_shape)
discriminator.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy'])
generator = build_generator(gen_input_dim)
z = Input(shape=(gen_input_dim,))
img = generator(z)
discriminator.trainable = False
validity = discriminator(img)
combined = Model(z, validity)
combined.compile(loss='binary_crossentropy',  optimizer=optimizer)

8.4 訓練

是時候訓練我們的 GAN 了。我們知道它運行周期的迭代次數。在每次迭代中,從訓練集中獲取一批隨機圖像,生成器通過傳遞噪聲生成一批假圖像。

鑒別器在真實圖像和虛假圖像上進行訓練。并計算平均損失。對發生器進行噪聲訓練并計算損耗。在這里,我們將sample_interval定義為 1000。因此,每 1000 次迭代,就會打印損失。

# Train GAN
epochs = 5000
batch_size = 32
sample_interval = 1000
d_losses = []
g_losses = []for epoch in range(epochs):idx = np.random.randint(0, X_train.shape[0], batch_size)real_images = X_train[idx]# Train discriminatornoise = np.random.normal(0, 1, (batch_size, gen_input_dim))fake_images = generator.predict(noise)d_loss_real = discriminator.train_on_batch(real_images, np.ones((batch_size, 1)))d_loss_fake = discriminator.train_on_batch(fake_images, np.zeros((batch_size, 1)))d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)d_losses.append(d_loss[0])# Train generatornoise = np.random.normal(0, 1, (batch_size, gen_input_dim))g_loss = combined.train_on_batch(noise, np.ones((batch_size, 1)))g_losses.append(g_loss)# Print progressif epoch % sample_interval == 0:print(f"Epoch {epoch}, Discriminator loss: {d_loss[0]}, Generator loss: {g_loss}")

8.5 生成示例圖像

現在讓我們看看一些生成的樣本。在這里,我們繪制了一個包含這些樣本的 5 行和 10 列的網格。這是使用 matplotlib 創建的。這些生成的樣本類似于我們用于訓練的數據集。我們可以通過訓練更多紀元來生成更高質量的樣本。

# Generate sample images
r, c = 5,10
noise = np.random.normal(0, 1, (r * c, gen_input_dim))
gen_imgs = generator.predict(noise)# Rescale images 0 - 1
gen_imgs = 0.5 * gen_imgs + 0.5# Plot images
fig, axs = plt.subplots(r, c)
cnt = 0
for i in range(r):for j in range(c):axs[i,j].imshow(gen_imgs[cnt,:,:,0], cmap='gray')axs[i,j].axis('off')cnt += 1
plt.show()

九、結論

????????生成對抗網絡 (GAN) 因其獨特的架構、訓練過程和生成數據的能力而成為許多應用程序最受歡迎的選擇。與任何技術一樣,GAN也有一些挑戰和局限性。研究人員正在努力將它們最小化,并渴望更好的GAN。總的來說,我們已經學習并理解了GAN的力量和潛力及其工作。我們還構建了一個 GAN,以使用時尚 MNIST 數據集生成時尚樣本。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46010.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙基本工程目錄

工程級目錄 AppScope 中存放應用全局所需要的資源文件。entry 是應用的主模塊,存放 HarmonyOS 應用的代碼、資源等。oh_modules 是工程的依賴包,存放工程依賴的源文件。build-profile.json5 是工程級配置信息,包括簽名、產品配置等。hvigorf…

品牌產業出海指南如何搭建國際化架構的跨境電商平臺?

在“品牌&產業出海指南 – 成功搭建跨境電商平臺”系列中,我們將從電商分銷系統、跨境平臺商城/多商戶商城系統和國際化架構三個方面對幫助您梳理不同平臺模式的優缺點、應用場景、開發重點和運營建議。 在“品牌&產業出海指南 – 成功搭建跨境電商平臺”系…

【漏洞復現】Rejetto HTTP文件服務器——遠程命令執行(CVE-2024-23692)

聲明:本文檔或演示材料僅供教育和教學目的使用,任何個人或組織使用本文檔中的信息進行非法活動,均與本文檔的作者或發布者無關。 文章目錄 漏洞描述漏洞復現測試工具 漏洞描述 Rejetto HTTP文件服務器是一個輕量級的HTTP服務器軟件&#xff…

VBA學習(20):一批簡單的Excel VBA編程問題解答

1.如何確定單元格區域內的行數和列數? 使用Range.Rows.Count和Range.Columns.Count屬性。 2.Application.Columns指的是什么? 活動工作表中的列。 3.你的程序在列B位置插入一個新列,原來的列B會怎樣? 它向右移動成為列C。 4.假…

vue項目1分鐘實現自定義右鍵菜單,懶人的福音

高效實現需求,避免重復造輪子,今天給大家分享的是,如何在最短的時間內實現右鍵菜單,方法也很簡單,一個插件就可以搞定,話不多說,上效果圖: 1. 效果圖: 2. 安裝&#xff…

5. 基于Embedding實現超越elasticsearch高級搜索

Embedding介紹 Embedding是向量的意思,向量可以理解為平面坐標中的一個坐標點(x,y),在編程領域,一個二維向量就是一個大小為float類型的數組。也可以用三維坐標系中的向量表示一個空間中的點。在機器學習中,向量通常用于表示數據的特征。 向量…

SCI丨中三區

無線網絡遙感圖像和視頻處理技術在xxxxx析基于智能物聯網的xxxxx養老模式可持續發展基于心理行為大數據分類算法xxxxxx研究基于云計算xxxxx行為分析及客戶感知體系的構建基于機器學習的xxxxx金鋼時效行為研究 基于機器視覺的xxxxx檢測系統研究 機器學習的電子顯微鏡xxxxx材料的…

探索Laravel的視圖組件與插槽:構建動態且可復用的UI

探索Laravel的視圖組件與插槽:構建動態且可復用的UI 引言 Laravel作為一個現代化的PHP框架,提供了許多強大的功能來幫助開發者構建高性能和可維護的Web應用。其中,視圖組件(View Components)和插槽(Slots…

【React Hooks原理 - forwardRef、useImperativeHandle】

概述 上文我們聊了useRef的使用和實現,主要兩個用途:1、用于持久化保存 2、用于綁定dom。 但是有時候我們需要在父組件中訪問子組件的dom或者屬性/方法,而React中默認是不允許父組件直接訪問子組件的dom的,這時候就可以通過forwa…

數據庫SQL Server列拼接Join和Union

文章目錄 JOINJOIN的基本語法如下: UNIONUNION的基本語法如下: 在 SQL Server中, JOIN和 UNION是兩種不同的操作,它們用于合并來自兩個或多個表的數據。 JOIN JOIN操作用于將兩個或多個表中的行結合起來,基于它們之…

Jmeter二次開發Demo

Jmeter二次開發Demo 前言 在上一集,我們已經完成了JMX腳本的分析,大致了解了JMX腳本的基本元素。 那么在這一集,我們將會介紹一下Jmeter二次開發的Demo。 Demo代碼 那么話不多說,我們就直接上代碼。 public class TestStress…

SpringBoot+HttpClient實現文件上傳下載

服務端:SpringBoot Controller package com.liliwei.controller;import java.io.File; import java.io.FileInputStream; import java.io.IOException;import javax.servlet.http.HttpServletResponse;import org.springframework.http.HttpHeaders; import org.s…

Cesium 判斷位置是否在當前視口范圍內

詳細步驟都在注釋里,不過多贅述了。 /*** @param {Object} position - Cartesian3坐標* @return {Boolean} 是否在視口中*/ function isPositionInViewport(position) {// 獲取當前視口范圍let viewport = viewer.camera.computeViewRectangle();// 2D模式下拾取不到坐標,vi…

類和對象的簡述(c++篇)

開局之前,先來個小插曲,放松一下: 讓我們的熊二來消滅所有bug 各位,在這祝我們: 放松過后,開始步入正軌吧。愛學習的鐵子們: 目錄: 一類的定義: 1.簡述: 2…

【JavaScript 算法】貪心算法:局部最優解的構建

🔥 個人主頁:空白詩 文章目錄 一、貪心算法的基本概念貪心算法的適用場景 二、經典問題及其 JavaScript 實現1. 零錢兌換問題2. 活動選擇問題3. 分配問題 三、貪心算法的應用四、總結 貪心算法(Greedy Algorithm)是一種逐步構建解…

mybatisPlus和mybatis的版本沖突問題、若依換成MP、解決git無法推送、使用若依框架的swagger、以后再遇到團隊項目應該怎么做。

20240716 一. mybatisPlus和mybatis的版本沖突問題1. 使用前的準備2. 我遇到了一個很嚴重的問題。3. 解決問題,好吧也沒解決,發現問題!! 二、該死的git!!!!1. 解決無法在idea中使用g…

【Outlook】從Outlook新版回歸經典版全攻略

引言 在微軟宣布計劃于2024年底淘汰郵件應用(Mail app)之后,許多用戶發現新版Outlook應用(Outlook (new))在他們的Windows 11/10系統上自動啟動。如果您更傾向于使用經典版Outlook(Outlook (classic)&…

webpack優化

優化方向 熱更新 概念 /** hmr: hot module replacement 熱模塊替換 / 模塊熱更新作用: 一個模塊發生改變,只會重新打包這一個模塊(而不是打包所有模塊),極大的提升了構建速度樣式文件: 可以使用hmr功能…

Facebook:數字時代的社交瑰寶

在當今數字化飛速發展的時代,社交媒體已經成為人們日常生活中不可或缺的一部分,而Facebook作為其中的領軍者,不僅連接了全球數十億的用戶,更深刻地改變了人們的社交方式和生活方式。本文將探討Facebook如何成為數字時代的社交瑰寶…

python如何創建SQLite 數據庫連接,如何將數據庫存儲在內存中?

嗨,大家好,我是蘭若姐姐。今天給大家說下如何創建SQLite 數據庫連接,并將數據庫存儲在內存中,這是一種臨時的、私有的數據存儲空間,一般用于以下情形: 什么都不說,先上代碼: import sqlite3創建數據庫連接…