第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在Keras中,如何通過(guò)預(yù)測(cè)方法獲得與評(píng)估方法相同的精度值?

在Keras中,如何通過(guò)預(yù)測(cè)方法獲得與評(píng)估方法相同的精度值?

人到中年有點(diǎn)甜 2022-09-06 17:23:44
首先,我按照教程中編碼的示例進(jìn)行操作并創(chuàng)建以下代碼:import numpy as npimport pandas as pdimport tensorflow as tffrom tensorflow import feature_columnfrom tensorflow.keras import layersfrom sklearn.model_selection import train_test_splitURL = 'https://storage.googleapis.com/applied-dl/heart.csv'dataframe = pd.read_csv(URL)dataframe.head()train, test = train_test_split(dataframe, test_size=0.2)train, val = train_test_split(train, test_size=0.2)def df_to_dataset(dataframe, shuffle=True, batch_size=32):  dataframe = dataframe.copy()  labels = dataframe.pop('target')  ds = tf.data.Dataset.from_tensor_slices((dict(dataframe), labels))  if shuffle:    ds = ds.shuffle(buffer_size=len(dataframe))  ds = ds.batch(batch_size)  return dsbatch_size = 32train_ds = df_to_dataset(train, batch_size=batch_size)val_ds = df_to_dataset(val, shuffle=False, batch_size=batch_size)test_ds = df_to_dataset(test, shuffle=False, batch_size=batch_size)feature_columns = []age = feature_column.numeric_column("age")# numeric colsfor header in ['age', 'trestbps', 'chol', 'thalach', 'oldpeak', 'slope', 'ca']:  feature_columns.append(feature_column.numeric_column(header))# bucketized colsage_buckets = feature_column.bucketized_column(age, boundaries=[18, 25, 30, 35, 40, 45, 50, 55, 60, 65])feature_columns.append(age_buckets)# indicator colsthal = feature_column.categorical_column_with_vocabulary_list(      'thal', ['fixed', 'normal', 'reversible'])thal_one_hot = feature_column.indicator_column(thal)feature_columns.append(thal_one_hot)# embedding colsthal_embedding = feature_column.embedding_column(thal, dimension=8)feature_columns.append(thal_embedding)我的問(wèn)題是我應(yīng)該使用什么方法將浮點(diǎn)數(shù)結(jié)果轉(zhuǎn)換為二進(jìn)制(0或1)并比較目標(biāo)?我的最終目標(biāo)是獲得通過(guò)評(píng)估方法獲得的精度值0.6885246。
查看完整描述

1 回答

?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

我對(duì)Tensorflow教程中最近的這種方式感到非常驚訝,在模型的最后一層()中使用線性激活函數(shù)來(lái)分類問(wèn)題,然后在損失函數(shù)中要求。我想原因是它可能會(huì)導(dǎo)致更好的數(shù)字穩(wěn)定性,如文檔中所聲稱的那樣:Dense(1)from_logits=True


from_logits:是否解釋為對(duì)數(shù)值的張量。默認(rèn)情況下,我們假設(shè) 包含概率(即 [0, 1] 中的值)。注意:使用可能數(shù)值更穩(wěn)定。y_predy_predfrom_logits=True


其中 “by defaul” 表示此處損失函數(shù)參數(shù)的默認(rèn)值為 。from_logits=False


無(wú)論如何,您最終得到了對(duì)logits的預(yù)測(cè),而不是概率,就像迄今為止在類似教程(和實(shí)踐中)中通常的情況一樣。Logits的問(wèn)題在于它們?nèi)狈χ庇^的解釋,與概率預(yù)測(cè)相反。


你應(yīng)該做的是從sigmoid函數(shù)傳遞你的logits,將它們轉(zhuǎn)換為概率:


import numpy as np


def sigmoid(x):

    return 1 / (1 + np.exp(-x))

前四個(gè)預(yù)測(cè)的示例:


preds = np.array([-1.7059733, -0.914219, 2.6422875, -0.50430596])

sigmoid(preds)

# array([0.15368673, 0.28613728, 0.93353404, 0.37652929])

然后將它們轉(zhuǎn)換為閾值為0.5的“硬”預(yù)測(cè):


final_preds = [1 if x>0.5 else 0 for x in preds]

final_preds

# [0, 0, 1, 0]

在這種形式下,你可以將它們與基本事實(shí)進(jìn)行比較。


但是,為了避免這種情況,我建議您考慮將最后一層更改為


Dense(1, activation='sigmoid')

并從損失定義中刪除該參數(shù)。這樣,就應(yīng)該返回硬預(yù)測(cè)(未測(cè)試)。(from_logits=True)model.predict


查看完整回答
反對(duì) 回復(fù) 2022-09-06
  • 1 回答
  • 0 關(guān)注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)