日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

selenium之 chromedriver与chrome版本映射表_NLP实战篇之tf2训练与评估

發布時間:2025/3/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium之 chromedriver与chrome版本映射表_NLP实战篇之tf2训练与评估 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是基于tensorflow2.2.0版本,介紹了模型的訓練與評估。主要介紹了tf.keras的內置訓練過程,包括compile、fit,其中compile中包含優化器、loss與metrics的使用,內置api中還包含了很多輔助工具,在Callback中進行介紹;除了簡單的單輸入單輸出模型之外,本文還介紹了多輸入、多輸出模型的訓練過程。本文中涉及的內容都是內置api,相關內容大都可以進行自定義,自定義相關內容會陸續在后續文章里介紹。

實戰系列篇章中主要會分享,解決實際問題時的過程、遇到的問題或者使用的工具等等。如問題分解、bug排查、模型部署等等。相關代碼實現開源在:https://github.com/wellinxu/nlp_store ,更多內容關注知乎專欄(或微信公眾號):NLP雜貨鋪。

  • 簡單文本分類模型示例
  • 訓練與評估流程
    • compile
    • fit
    • Callback
  • 多輸入、多輸出模型
    • compile
    • fit
  • 參考

簡單文本分類模型示例

如下面代碼所示,根據【NLP實戰篇之tensorflow2.0快速入門】獲取一個完整的文本分類示例,其中包含數據獲取、數據簡單預處理、模型構建、訓練與評估。

import?tensorflow?as?tf

#?下載IMDB數據
vocab_size?=?10000????#?保留詞的個數
imdb?=?tf.keras.datasets.imdb
(train_data,?train_labels),?(test_data,?test_labels)?=?imdb.load_data(num_words=vocab_size)

#?一個將單詞映射到整數索引的詞典
word_index?=?imdb.get_word_index()???#?索引從1開始
word_index?=?{k:(v+3)?for?k,v?in?word_index.items()}
word_index[""]?=?0
word_index[""]?=?1
word_index[""]?=?2??#?unknown
word_index[""]?=?3

#?統一文本序列長度
train_data?=?tf.keras.preprocessing.sequence.pad_sequences(train_data,?value=word_index[""],?padding="post",?truncating="post",?maxlen=256)
test_data?=?tf.keras.preprocessing.sequence.pad_sequences(test_data,?value=word_index[""],?padding="post",?truncating="post",?maxlen=256)


#?模型構建
model?=?tf.keras.Sequential([
????????tf.keras.layers.Embedding(vocab_size,?16),????#?[batch_size,?seq_len,?16]
????????tf.keras.layers.GlobalAveragePooling1D(),????#?[batch_size,?16]
????????tf.keras.layers.Dense(16,?activation='relu'),????#?[batch_size,?16]
????????tf.keras.layers.Dense(1,?activation='sigmoid')????#?[batch_size,?1]
????])



#?配置模型訓練參數
#?model.compile(optimizer='adam',?loss='binary_crossentropy',?metrics=['accuracy'])
model.compile(optimizer=tf.keras.optimizers.Adam(),?loss=tf.keras.losses.BinaryCrossentropy(),?metrics=[tf.keras.metrics.BinaryAccuracy()])
#?訓練模型
history?=?model.fit(train_data,?train_labels,?epochs=40,?batch_size=512)
#?評估測試集
model.evaluate(test_data,??test_labels,?verbose=2)

訓練與評估流程

compile

如上面代碼所示,要使用fit進行訓練模型,需要制定優化器、損失函數和評價指標,通過compile方法傳遞給模型。除了這三個參數,compile還包含了其他參數:

  • optimizer: 字符串(優化器名稱)或者優化器實例,具體可看tf.keras.optimizers
  • loss: 字符串(損失函數名稱)、損失函數或損失實例,具體可看tf.keras.losses.Loss與tf.keras.losses
  • metrics: 評價方法列表,列表中每個值可以是字符串(度量函數名稱)、度量函數或者度量實例,具體可看tf.keras.metrics.Metric與tf.keras.metrics
  • loss_weights: 列表或者字典格式,模型不同輸出的loss權重,用于多輸出模型
  • sample_weight_mode:
  • weighted_metrics: 通過樣本權重或者類別權重計算的度量列表
  • **kwargs: 其他關鍵字參數
  • 其中優化器、loss和度量方法都有很多內置的api,如下表所示。除此之外,還支持自定義相關函數,此部分內容在后續文章中介紹。

  • optimizer優化器:Adadelta、Adagrad、Adam、Adamax、Ftrl、SGD、Nadam、RMSprop等
  • loss損失:BinaryCrossentropy、CategoricalCrossentropy、CategoricalHinge、CosineSimilarity、Hinge、Huber、KLDivergence、LogCosh、MeanAbsoluteError、MeanAbsolutePercentageError、MeanSquaredError、MeanSquaredLogarithmicError、Poisson、SparseCategoricalCrossentropy、SquaredHinge、MAE、MAPE、MSE、MSLE等等
  • metrics度量:AUC、Accuracy、BinaryAccuracy、BinaryCrossentropy、CategoricalAccuracy、CosineSimilarity、FalseNegatives、FalsePositives、MeanIoU、Mean、MeanAbsoluteError、MeanSquaredError、Precision、Recall、TopKCategoricalAccuracy等等
  • 在訓練神經網絡的時候,有個比較重要的超參數:學習率,這個參數的大小或者變化,都嚴重影響著最終模型的效果。通過優化器中learning_rate參數可以設置學習率的大小與變化。learning_rate可以設置為靜態的,比如2e-5,或者設置為動態的,tf.keras.optimizers.schedules中已經提供了部分學習率衰減方法,如:ExponentialDecay、InverseTimeDecay、LearningRateSchedule、PiecewiseConstantDecay、PolynomialDecay等等。

    fit

    fit方法是tf.keras中內置的訓練方法,其除了包含必要的輸入數據與訓練輪次之外,還有包含很多其他參數,如下所示:

  • batch_size: Integer或None,每次進行梯度更新的樣本數量,默認32
  • epochs: Integer. 模型訓練的輪次Number of epochs to train the model.
  • verbose: 0, 1, or 2. 信息顯示模式0 = silent, 1 = progress bar, 2 = one line per epoch
  • callbacks: keras.callbacks.Callback示例列表
  • validation_split: 0-1之間的浮點數,將多少比例的訓練數據用作驗證數據
  • validation_data: 評估數據
  • shuffle: Boolean (每一輪訓練之前是否擾亂訓練數據) or str (for 'batch')
  • class_weight: 字典,類別權重,類別索引為key,權重為值
  • sample_weight: 樣本權重
  • initial_epoch: Integer,從第幾輪次開始訓練
  • steps_per_epoch: Integer or None,每輪次訓練多少步
  • validation_steps:
  • validation_batch_size:
  • validation_freq:
  • max_queue_size: Integer. 只用于keras.utils.Sequence輸入
  • workers: Integer. 只用于keras.utils.Sequence輸入
  • use_multiprocessing: Boolean. 只用于keras.utils.Sequence輸入
  • 其中validation_split參數可以自動分離訓練集留作驗證數據,class_weight作為類權重,可以緩解類別不平衡的問題,樣本權重sample_weight可以起到類似的作用,其控制程度更細致,能夠進一步提高難樣本的權重,或者降低簡單/無效等樣本。

    Callback

    Callback是訓練或評估期間,在不同時間點(某個周期開始時、某個批次結束時、某個周期結束時)調用的對象,這些對象可以實現以下行為:

  • 定義驗證模型
  • 定期或者觸發條件進行模型保存
  • 訓練停滯時改變學習率
  • 訓練停滯時微調結構
  • 訓練結束或者觸發條件時發送電子郵件或即時消息等
  • 具體使用方式,如下所示:

    callbacks?=?[
    ????#?提前終止訓練
    ????tf.keras.callbacks.EarlyStopping(monitor="val_loss",?min_delta=1e-2,?patience=2,?verbose=1),
    ????#?保存中間模型
    ????tf.keras.callbacks.ModelCheckpoint(filepath="mymodel_{epoch}",?save_best_only=True,?monitor="val_loss",?verbose=1),
    ????#?可視化化損失與指標
    ????tf.keras.callbacks.TensorBoard(log_dir="/full_path_to_your_logs",?histogram_freq=0,?embeddings_freq=0,?update_freq="epoch")
    ]
    model.fit(train_data,?train_labels,?epochs=40,?batch_size=512,?callbacks=callbacks)

    tf.keras.callbacks中提供了一些內置的callback,我們也可以進行自定義,自定義相關內容后續文章介紹。下面展示了keras中內置的callback:

  • BaseLogger:累積每輪訓練的平均指標,這個Callback會被keras模型默認調用
  • CSVLogger:將每輪的損失與度量結果數據流寫入csv文件中
  • EarlyStopping:當指定的度量指標停止改進時,停止訓練
  • History:將事件記錄到History對象中,這個Callback會被keras模型默認調用
  • LearningRateScheduler:修改學習率
  • ModelCheckpoint:以某種頻率保存模型或權重
  • ProgbarLogger:向stdout輸出度量指標
  • ReduceLROnPlateau:當某個指標停止改進時降低學習率
  • RemoteMonitor
  • TensorBoard:可視化工具
  • TerminateOnNaN:當遇到NaN損失時終止訓練
  • 多輸入、多輸出模型


    前面的示例中,模型都是單個輸入與單個輸出,但有很多模型是多個輸入或輸出,例如上圖模型結構所示,我們用以下方法構建模型:

    image_input?=?tf.keras.Input(shape=(32,?32,?3),?name="img_input")
    timeseries_input?=?tf.keras.Input(shape=(None,?10),?name="ts_input")

    x1?=?tf.keras.layers.Conv2D(3,?3)(image_input)
    x1?=?tf.keras.layers.GlobalMaxPooling2D()(x1)

    x2?=?tf.keras.layers.Conv1D(3,?3)(timeseries_input)
    x2?=?tf.keras.layers.GlobalMaxPooling1D()(x2)

    x?=?tf.keras.layers.concatenate([x1,?x2])

    score_output?=?tf.keras.layers.Dense(1,?name="score_output")(x)
    class_output?=?tf.keras.layers.Dense(5,?activation="softmax",?name="class_output")(x)

    model?=?tf.keras.Model(
    ????????inputs=[image_input,?timeseries_input],?outputs=[score_output,?class_output]
    ????)

    compile

    如果loss或者metrics參數只有單個傳遞給模型,則每一個輸出都用一個loss或者metrics,但在很多情況下不同的輸出需要不同的loss或者metrics,我們就需要對應每個輸出給出不同的值,如下面所示:

    model.compile(
    ????????optimizer=tf.keras.optimizers.RMSprop(1e-3),
    ????????loss=[tf.keras.losses.MeanSquaredError(),?tf.keras.losses.CategoricalCrossentropy()],
    ????????metrics=[
    ????????????[
    ????????????????tf.keras.metrics.MeanAbsolutePercentageError(),
    ????????????????tf.keras.metrics.MeanAbsoluteError(),
    ????????????],
    ????????????[tf.keras.metrics.CategoricalAccuracy()],
    ????????],
    ????)

    loss與metrics都是list的形式,按照output的順序對應,而我們上面的模型中,已經給輸出層進行了命名,則可以通過字典來制定loss與metrics,當輸出超過2個的時候,尤其推薦字典的方式。同時,我們還可以使用loss_weights參數來給不同的輸出指定權重,具體使用方法如下:

    model.compile(
    ????????optimizer=tf.keras.optimizers.RMSprop(1e-3),
    ????????loss={
    ????????????"score_output":?tf.keras.losses.MeanSquaredError(),
    ????????????"class_output":?tf.keras.losses.CategoricalCrossentropy(),
    ????????},
    ????????metrics={
    ????????????"score_output":?[
    ????????????????tf.keras.metrics.MeanAbsolutePercentageError(),
    ????????????????tf.keras.metrics.MeanAbsoluteError(),
    ????????????],
    ????????????"class_output":?[tf.keras.metrics.CategoricalAccuracy()],
    ????????},
    ????????loss_weights={"score_output":?2.0,?"class_output":?1.0},
    ????)

    除此之外,如果某些輸出不為訓練,只用來預測,則可以寫成這樣:

    ????#?list的形式
    ????model.compile(
    ????????optimizer=tf.keras.optimizers.RMSprop(1e-3),
    ????????loss=[None,?tf.keras.losses.CategoricalCrossentropy()],
    ????)

    ????#?或dict的形式
    ????model.compile(
    ????????optimizer=tf.keras.optimizers.RMSprop(1e-3),
    ????????loss={"class_output":?tf.keras.losses.CategoricalCrossentropy()},
    ????)

    fit

    fit在接受多輸入的時候,跟上面loss類似,可以使用numpy數組的list或者dict形式,如下所示:

    ????#?隨機生成NumPy數據
    ????img_data?=?np.random.random_sample(size=(100,?32,?32,?3))
    ????ts_data?=?np.random.random_sample(size=(100,?20,?10))
    ????score_targets?=?np.random.random_sample(size=(100,?1))
    ????class_targets?=?np.random.random_sample(size=(100,?5))

    ????#?list形式
    ????model.fit([img_data,?ts_data],?[score_targets,?class_targets],?batch_size=32,?epochs=1)

    ????#?或者dict形式
    ????model.fit(
    ????????{"img_input":?img_data,?"ts_input":?ts_data},
    ????????{"score_output":?score_targets,?"class_output":?class_targets},
    ????????batch_size=32,
    ????????epochs=1,
    ????)

    當然可以將數據轉換成Dataset格式,然后傳給fit,如下面代碼所示:

    ????#?dataset格式
    ????train_dataset?=?tf.data.Dataset.from_tensor_slices(
    ????????(
    ????????????{"img_input":?img_data,?"ts_input":?ts_data},
    ????????????{"score_output":?score_targets,?"class_output":?class_targets},
    ????????)
    ????)
    ????train_dataset?=?train_dataset.shuffle(buffer_size=1024).batch(64)

    ????model.fit(train_dataset,?epochs=1)

    參考

    https://www.tensorflow.org/guide/keras/train_and_evaluate

    總結

    以上是生活随笔為你收集整理的selenium之 chromedriver与chrome版本映射表_NLP实战篇之tf2训练与评估的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 九九九视频在线观看 | 欧美狠狠 | 国产精品污www一区二区三区 | 奇米成人网| 亚洲天堂影院 | 欧美图片一区 | 99热99在线 | 黑森林av凹凸导航 | 久操热| 伊人综合影院 | av中文字幕一区二区 | 自拍偷拍亚洲综合 | 91精品国产高潮对白 | 中文字幕在线视频一区二区三区 | 中文字幕 欧美激情 | 亚洲精品在线91 | 香蕉视频性 | 免费观看在线高清 | 波多野结衣中文字幕久久 | 国产午夜小视频 | 美女露出让男生揉的视频 | 麻豆网站在线看 | 日本美女三级 | 女人18毛片一区二区三区 | 视频在线观看99 | 欧美人妻精品一区二区免费看 | 亚洲一区二区乱码 | 欧美一区二区最爽乱淫视频免费看 | 欧美色呦呦| 国语精品| 国产在线中文字幕 | 插插插91 | 啪啪自拍 | 东北少妇露脸无套对白 | 欧美日韩一区二区视频观看 | 一级黄色片看看 | 国产精品厕所 | 欧亚一级片 | 91福利在线导航 | 国产美女免费观看 | 欧美久久伊人 | 91福利一区 | 欧美日韩人妻精品一区二区 | 好吊一区二区三区视频 | 精品无码久久久久久久久久 | 欧美黄色免费网站 | 色婷婷av一区二区三 | 一区二区三区免费在线观看 | 免费大片黄在线观看视频网站 | 免费看黄在线 | 亚洲综合色小说 | 卡通动漫亚洲综合 | 亚洲国产精品人人爽夜夜爽 | 91精品专区 | 欧美成人一区二免费视频软件 | 日韩精品亚洲精品 | 国产区免费观看 | 午夜鲁鲁 | 中文字幕22页 | 影音先锋二区 | 麻豆传媒在线免费 | www.婷婷色 | 日本东京热一区二区 | 天天摸天天操天天干 | 久久久久亚洲AV | 国产精品视频一区二区在线观看 | 国语对白做受69 | 91精品色| 国精产品一区 | 日本a视频在线观看 | 中文字幕一区视频 | 欧美巨鞭大战丰满少妇 | 91精品婷婷国产综合久久 | 黄色午夜影院 | 久久性感美女视频 | 亚洲国产精品99久久久久久久久 | 日韩一卡二卡在线 | 亚洲国产伊人 | 久久午夜电影网 | 91精品国产一区二区三区蜜臀 | av收藏小四郎最新地址 | 麻豆av网| av十大美巨乳 | 国模精品视频一区二区 | 欧美人禽杂交狂配 | 久久在线 | 黄色在线观看免费视频 | 国产精品av免费观看 | 国产美女操 | 亚洲第一综合色 | 欧美日韩一区二区不卡 | 国产伦乱| 成人性做爰片免费视频 | 最新最近中文字幕 | 热热色av| 亚洲黄色激情 | 91精品国产高清一区二区三蜜臀 | 亚洲风情第一页 | 成人在线观看免费视频 |