亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用與模型輸入形狀兼容的tensorflow.data.experimental

如何使用與模型輸入形狀兼容的tensorflow.data.experimental

慕無忌1623718 2023-09-12 17:41:33
我將使用tensorflow.data.experimental.CsvDatasetTensorFlow 2 來訓練小批量。但是 Tensor 的形狀不適合我模型的輸入形狀。請讓我知道通過 TensorFlow 數據集進行小批量訓練的最佳方法是什么。我嘗試如下:# I have a dataset with 4 features and 1 labelfeature = tf.data.experimental.CsvDataset(['C:/data/iris_0.csv'], record_defaults=[.0] * 4, header=True, select_cols=[0,1,2,3])label = tf.data.experimental.CsvDataset(['C:/data/iris_0.csv'], record_defaults=[.0] * 1, header=True, select_cols=[4])dataset = tf.data.Dataset.zip((feature, label))# and I try to minibatch training:model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=(4,))])model.compile(loss='mse', optimizer='sgd')model.fit(dataset.repeat(1).batch(3), epochs=1)我收到一個錯誤:ValueError:檢查輸入時出錯:期望dense_6_input具有形狀(4,)但得到形狀為(1,)的數組因為:CsvDataset()返回形狀的張量(features, batch),但我需要它是形狀的(batch, features)。參考代碼:for feature, label in dataset.repeat(1).batch(3).take(1):    print(feature)# (<tf.Tensor: id=487, shape=(3,), dtype=float32, numpy=array([5.1, 4.9, 4.7], dtype=float32)>, <tf.Tensor: id=488, shape=(3,), dtype=float32, numpy=array([3.5, 3. , 3.2], dtype=float32)>, <tf.Tensor: id=489, shape=(3,), dtype=float32, numpy=array([1.4, 1.4, 1.3], dtype=float32)>, <tf.Tensor: id=490, shape=(3,), dtype=float32, numpy=array([0.2, 0.2, 0.2], dtype=float32)>)
查看完整描述

1 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

創建tf.data.experimental.CsvDataset一個數據集,其中數據集的每個元素對應于 CSV 文件中的一行,并由多個張量組成,即每列一個單獨的張量。因此,首先需要使用mapdataset 方法將所有這些張量堆疊到單個張量中,以便它與模型期望的輸入形狀兼容:


def map_func(features, label):

    return tf.stack(features, axis=1), tf.stack(label, axis=1)


dataset = dataset.map(map_func).batch(BATCH_SIZE)


查看完整回答
反對 回復 2023-09-12
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號