国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Tensorflow 利用tf.contrib.learn建立輸入函數的方法

2020-02-22 23:10:51
字體:
來源:轉載
供稿:網友

在實際的業務中,可能會遇到很大量的特征,這些特征良莠不齊,層次不一,可能有缺失,可能有噪聲,可能規模不一致,可能類型不一樣,等等問題都需要我們在建模之前,先預處理特征或者叫清洗特征。那么這清洗特征的過程可能涉及多個步驟可能比較復雜,為了代碼的簡潔,我們可以將所有的預處理過程封裝成一個函數,然后直接往模型中傳入這個函數就可以啦~~~

接下來我們看看究竟如何做呢?

1. 如何使用input_fn自定義輸入管道

當使用tf.contrib.learn來訓練一個神經網絡時,可以將特征,標簽數據直接輸入到.fit(),.evaluate(),.predict()操作中。比如在筆記04中就使用到了,復看一下代碼:

# 將特征與標簽數據載入training_set = tf.contrib.learn.datasets.base.load_csv_with_header( filename=IRIS_TRAINING, target_dtype=np.int, features_dtype=np.float32)test_set = tf.contrib.learn.datasets.base.load_csv_with_header( filename=IRIS_TEST, target_dtype=np.int, features_dtype=np.float32)# 然后將兩個數據喂給.fit()函數去訓練classifier.fit(x=training_set.data,    y=training_set.target,    steps=2000)

當原始數據不需要或幾乎很少需要一些額外的預處理時,使用以上的方式到也不為過。然而在實際的業務中我們往往需要去做大量的特征工程,于是tf.contrib.learn支持使用一個用戶自定義的輸入函數input_fn來封裝數據預處理的邏輯,并且將數據通過管道輸送到模型中。

1.1 解剖input_fn函數的結構

以下是一個input_fn函數的基本結構:

def my_input_fn(): # Preprocess your data here...(首先預處理你的數據) # ...then return 1) a mapping of feature columns to Tensors with # the corresponding feature data, and 2) a Tensor containing labels # 然后返回新的特征數據與標簽數據(都是以tensor的形式) return feature_cols, labels

輸入函數的主體包括一個特定的預處理輸入數據的邏輯,比如去除一些臟數據,彌補缺失數據,歸一化等等。

輸入函數的返回是兩個部分:

(1)處理后的特征:feature_cols,格式是一個map,key是特征的名稱,value是tensor形式的對應的特征列數據
(2)標簽數據:labels,一個包含標簽數據的tensor

1.2 如何將特征數據轉換成tensors形式

如果你的特征/標簽是存儲在pandas的dataframe中或者numpy的array中的話,你就需要在返回特征與標簽的時候將它們轉換成tensor形式哦~那么怎么轉換呢,來看一個小例子。

對于連續型數據,你可以使用tf.constant創建一個tensor:

feature_column_data = [1, 2.4, 0, 9.9, 3, 120]feature_tensor = tf.constant(feature_column_data)

對于稀疏型數據,類別下數據,你可以使用tf.SparseTensor來創建tensor:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵港市| 屯门区| 扶绥县| 唐海县| 锡林浩特市| 右玉县| 比如县| 新密市| 台前县| 磴口县| 台东市| 西和县| 丹棱县| 新疆| 临夏市| 广灵县| 喀喇| 肇东市| 钟山县| 延津县| 绥宁县| 都昌县| 武义县| 信宜市| 大名县| 安陆市| 三台县| 鸡西市| 井研县| 五大连池市| 深州市| 大石桥市| 乌苏市| 留坝县| 沭阳县| 西宁市| 天长市| 肇州县| 沙坪坝区| 岫岩| 武夷山市|