當(dāng)前位置:首頁(yè) > 物聯(lián)網(wǎng) > 智能應(yīng)用
[導(dǎo)讀]神經(jīng)網(wǎng)絡(luò)與人工智能transformer主要差異

神經(jīng)網(wǎng)絡(luò)人工智能transformer

主要差異

1. 結(jié)構(gòu)

傳統(tǒng)的RNN:

def create_rnn():

return tf.keras.Sequential([

tf.keras.layers.LSTM(64, return_sequences=True),

tf.keras.layers.LSTM(32),

tf.keras.layers.Dense(10)

])

簡(jiǎn)單transformer:

def create_transformer():

return tf.keras.Sequential([

tf.keras.layers.MultiHeadAttention(num_heads=8, key_dim=64),

tf.keras.layers.LayerNormalization(),

tf.keras.layers.Dense(64, activation='relu'),

tf.keras.layers.Dense(10)

])

2. 處理能力

神經(jīng)網(wǎng)絡(luò) :順序處理。

變形器 :并行處理帶有注意機(jī)制。

3. 用例

神經(jīng)網(wǎng)絡(luò) 傳統(tǒng)的計(jì)算機(jī)任務(wù),計(jì)算機(jī)視覺(jué)。

變形器 :NLP,大型語(yǔ)言模型。

實(shí)際推行技巧

1. 選型

def choose_model(task_type, input_shape):

if task_type == 'image':

return create_cnn()

elif task_type == 'sequence':

return create_rnn()

else:

return create_basic_nn()

2. 超參數(shù)調(diào)整

from keras_tuner import RandomSearch

def tune_hyperparameters(model_builder, x_train, y_train):

tuner = RandomSearch(

model_builder,

objective='val_accuracy',

max_trials=5

)

tuner.search(x_train, y_train,

epochs=5,

validation_split=0.2)

return tuner.get_best_hyperparameters()[0]

現(xiàn)實(shí)世界案例研究

1.醫(yī)學(xué)影像分析

實(shí)例:COVD-19X射線分類:

def create_medical_cnn():

model = tf.keras.Sequential([

tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)),

tf.keras.layers.BatchNormalization(),

tf.keras.layers.MaxPooling2D((2, 2)),

tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),

tf.keras.layers.BatchNormalization(),

tf.keras.layers.MaxPooling2D((2, 2)),

tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),

tf.keras.layers.BatchNormalization(),

tf.keras.layers.GlobalAveragePooling2D(),

tf.keras.layers.Dense(2, activation='softmax')

])

return model

定制數(shù)據(jù)生成器,增加:

def create_medical_data_generator():

return tf.keras.preprocessing.image.ImageDataGenerator(

rotation_range=20,

width_shift_range=0.2,

height_shift_range=0.2,

horizontal_flip=True,

validation_split=0.2,

preprocessing_function=tf.keras.applications.resnet50.preprocess_input

)

2.財(cái)務(wù)時(shí)間序列預(yù)測(cè)

例子:股價(jià)預(yù)測(cè):

def create_financial_lstm():

model = tf.keras.Sequential([

tf.keras.layers.LSTM(50, return_sequences=True, input_shape=(60, 5)),

tf.keras.layers.Dropout(0.2),

tf.keras.layers.LSTM(50, return_sequences=False),

tf.keras.layers.Dropout(0.2),

tf.keras.layers.Dense(1)])

return

財(cái)務(wù)數(shù)據(jù)特征工程:

def prepare_financial_data(df, look_back=60):

features = ['Open', 'High', 'Low', 'Close', 'Volume']

scaler = MinMaxScaler()

scaled_data = scaler.fit_transform(df[features])

X, y = [], []

for i in range(look_back, len(scaled_data)):

X.append(scaled_data[i-look_back:i])

y.append(scaled_data[i, 3]) # Predicting Close price

return np.array(X), np.array(y), scaler

示范部署指南

1.模型優(yōu)化

量化:

def quantize_model(model):

converter = tf.lite.TFLiteConverter.from_keras_model(model)

converter.optimizations = [tf.lite.Optimize.DEFAULT]

converter.target_spec.supported_types = [tf.float16]

tflite_model = converter.convert()

return tflite_model

修剪:

def create_pruned_model(model, training_data):

pruning_params = {

'pruning_schedule': tfmot.sparsity.keras.PolynomialDecay(

initial_sparsity=0.30,

final_sparsity=0.80,

begin_step=0,

end_step=end_step)

}

model_pruned = tfmot.sparsity.keras.prune_low_magnitude(

model, pruning_params)

return model_pruned

2.生產(chǎn)部署

提供模式服務(wù)的瓶狀A(yù)PI:

from flask import Flask, request, jsonify

app = Flask(__name__)

model = None

def load_model():

global model

model = tf.keras.models.load_model('path/to/model')

@app.route('/predict', methods=['POST'])

def predict():

data = request.json['data']

processed_data = preprocess_input(data)

prediction = model.predict(processed_data)

return jsonify({'prediction': prediction.tolist()})

文檔文件:

FROM python:3.8-slim

WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

CMD ["python", "app.py"]

最新的Transformers創(chuàng)新

1. Vision Transformers (ViT)

def create_vit_model(input_shape, num_classes):

inputs = tf.keras.Input(shape=input_shape)

# Patch embedding

patches = tf.keras.layers.Conv2D(filters=768, kernel_size=16, strides=16)(inputs)

flat_patches = tf.keras.layers.Reshape((-1, 768))(patches)

# Position embedding

positions = tf.range(start=0, limit=flat_patches.shape[1], delta=1)

pos_embedding = tf.keras.layers.Embedding(input_dim=flat_patches.shape[1], output_dim=768)(positions)

x = flat_patches + pos_embedding

# Transformer blocks

for _ in range(12):

x = transformer_block(x)

x = tf.keras.layers.GlobalAveragePooling1D()(x)

outputs = tf.keras.layers.Dense(num_classes, activation='softmax')(x)

return tf.keras.Model(inputs=inputs, outputs=outputs)

2. MLP-Mixer Architecture

def mlp_block(x, hidden_units, dropout_rate):

x = tf.keras.layers.Dense(hidden_units, activation='gelu')(x)

x = tf.keras.layers.Dense(x.shape[-1])(x)

x = tf.keras.layers.Dropout(dropout_rate)(x)

return x

def mixer_block(x, tokens_mlp_dim, channels_mlp_dim, dropout_rate):

# Token-mixing

y = tf.keras.layers.LayerNormalization()(x)

y = tf.transpose(y, perm=[0, 2, 1])

y = mlp_block(y, tokens_mlp_dim, dropout_rate)

y = tf.transpose(y, perm=[0, 2, 1])

x = x + y

# Channel-mixing

y = tf.keras.layers.LayerNormalization()(x)

y = mlp_block(y, channels_mlp_dim, dropout_rate)

return x + y

優(yōu)化表現(xiàn)技巧

1.記憶管理

大型數(shù)據(jù)集定制數(shù)據(jù)生成器:

class DataGenerator(tf.keras.utils.Sequence):

def __init__(self, x_set, y_set, batch_size):

self.x, self.y = x_set, y_set

self.batch_size = batch_size

def __len__(self):

return int(np.ceil(len(self.x) / self.batch_size))

def __getitem__(self, idx):

batch_x = self.x[idx * self.batch_size:(idx + 1) * self.batch_size]

batch_y = self.y[idx * self.batch_size:(idx + 1) * self.batch_size]

return np.array(batch_x), np.array(batch_y)

2.培訓(xùn)優(yōu)化

混合精密訓(xùn)練:

def enable_mixed_precision():

policy = tf.keras.mixed_precision.Policy('mixed_float16')

tf.keras.mixed_precision.set_global_policy(policy)

具有梯度積累的定制訓(xùn)練循環(huán):

def enable_mixed_precision():

policy = tf.keras.mixed_precision.Policy('mixed_float16')

tf.keras.mixed_precision.set_global_policy(policy)

Custom training loop with gradient accumulation:

Python

def train_with_gradient_accumulation(model, dataset, accumulation_steps=4):

optimizer = tf.keras.optimizers.Adam()

gradients = [tf.zeros_like(v) for v in model.trainable_variables]

for step, (x_batch, y_batch) in enumerate(dataset):

with tf.GradientTape() as tape:

predictions = model(x_batch, training=True)

loss = compute_loss(y_batch, predictions)

loss = loss / accumulation_steps

grads = tape.gradient(loss, model.trainable_variables)

gradients = [(acc_grad + grad) for acc_grad, grad in zip(gradients, grads)]

if (step + 1) % accumulation_steps == 0:

optimizer.apply_gradients(zip(gradients, model.trainable_variables))

gradients = [tf.zeros_like(v) for v in model.trainable_variables]

追加資源

1. 網(wǎng)上學(xué)習(xí)平臺(tái)

課程:深入學(xué)習(xí)專業(yè)化

快速綜合學(xué)習(xí):實(shí)際深入學(xué)習(xí)

張力流官方教程

2. 書(shū)籍

伊恩·古德費(fèi)羅的《深度學(xué)習(xí)》

邁克爾尼爾森的《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》

3. 實(shí)踐平臺(tái)

卡格爾:真實(shí)世界數(shù)據(jù)集和競(jìng)爭(zhēng)

谷歌COLAB:免費(fèi)的GPU接入

張力流游樂(lè)場(chǎng):互動(dòng)可視化

結(jié)論

神經(jīng)網(wǎng)絡(luò)是不斷發(fā)展的強(qiáng)大工具。本指南提供了基礎(chǔ),但該領(lǐng)域正在迅速發(fā)展。堅(jiān)持實(shí)驗(yàn),保持好奇,記住實(shí)踐經(jīng)驗(yàn)是最好的老師。

下面是一些成功的秘訣:

從簡(jiǎn)單的架構(gòu)開(kāi)始。

徹底了解你的數(shù)據(jù)。

仔細(xì)監(jiān)控培訓(xùn)指標(biāo)。

為您的模型使用版本控制。

繼續(xù)進(jìn)行最新的研究.

記住 :最好的學(xué)習(xí)方法是實(shí)現(xiàn)和試驗(yàn)不同的架構(gòu)和數(shù)據(jù)集。

20250114_6785b114e9b0a__理解神經(jīng)網(wǎng)絡(luò),第三部分神經(jīng)網(wǎng)絡(luò)人工智能

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉