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

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

此錯誤的含義:使用 python 生成器作為輸入時不支持 `y` 參數

此錯誤的含義:使用 python 生成器作為輸入時不支持 `y` 參數

九州編程 2023-02-07 14:56:04
我嘗試開發一個網絡,并使用 python 生成器作為數據提供者。一切看起來都很好,直到模型開始適合,然后我收到此錯誤:ValueError: `y` argument is not supported when using dataset as input.我校對了每一行,我認為問題出在網絡的格式x_test和y_test饋送上。經過數小時的谷歌搜索并多次更改格式后,錯誤仍然存在。你能幫我修一下嗎?您可以在下面找到完整的代碼:import osimport numpy as npimport pandas as pdimport re  # To match regular expression for extracting labelsimport tensorflow as tfprint(tf.__version__)def xfiles(filename):    if re.match('^\w{12}_x\.csv$', filename) is None:        return False    else:        return Truedef data_generator():    folder = "i:/Stockpred/csvdbase/datasets/DS0002"    file_list = os.listdir(folder)    x_files = list(filter(xfiles, file_list))    x_files.sort()    np.random.seed(1729)    np.random.shuffle(x_files)    for file in x_files:        filespec = folder + '/' + file        xs = pd.read_csv(filespec, header=None)        yfile = file.replace('_x', '_y')        yfilespec = folder + '/' + yfile        ys = pd.read_csv(open(yfilespec, 'r'), header=None, usecols=[1])        xs = np.asarray(xs, dtype=np.float32)        ys = np.asarray(ys, dtype=np.float32)        for i in range(xs.shape[0]):            yield xs[i][1:169], ys[i][0]dataset = tf.data.Dataset.from_generator(    data_generator,    (tf.float32, tf.float32),    (tf.TensorShape([168, ]), tf.TensorShape([])))dataset = dataset.shuffle(buffer_size=16000, seed=1729)# dataset = dataset.batch(4000, drop_remainder=True)dataset = dataset.cache('R:/Temp/model')def is_test(i, d):    return i % 4 == 0def is_train(i, d):    return not is_test(i, d)recover = lambda i, d: dtest_dataset = dataset.enumerate().filter(is_test).map(recover)train_dataset = dataset.enumerate().filter(is_train).map(recover)x_test = test_dataset.map(lambda x, y: x)y_test = test_dataset.map(lambda x, y: y)x_train = train_dataset.map(lambda x, y: x)y_train = train_dataset.map(lambda x, y: y)在模型開始適合之前,一切看起來都很好。我收到這個錯誤:ValueError: `y` argument is not supported when using dataset as input.你能幫忙修一下嗎?
查看完整描述

3 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

正如文檔所說:

y - 目標數據。與輸入數據 x 一樣,它可以是 Numpy 數組或 TensorFlow 張量。它應該與 x 一致(你不能有 Numpy 輸入和張量目標,反之亦然)。如果 x 是數據集、生成器或 keras.utils.Sequence 實例,則不應指定 y(因為目標將從 x 獲得)。

所以,我想你應該有一個生成器服務樣本和標簽的元組。


查看完整回答
反對 回復 2023-02-07
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

如果您提供數據集作為輸入,那么

type(train_dataset)應該tensorflow.python.data.ops.dataset_ops.BatchDataset

如果是這樣,只需將此數據集(包括您的 X 和 y 包)提供給模型,

model.fit(train_dataset, batch_size=32, epochs=100)

(是的,這與我們在 sklearn 中的做法略有不同——X 和 y 分別。)

同時,如果你想tensorflow顯式地使用一個單獨的數據集進行驗證,你必須像這樣使用 kwarg:

model.fit(train_dataset, validation_data=val_dataset, batch_size=32, epochs=100)

哪里val_dataset是您在模型訓練期間為驗證而保留的單獨數據集。(未測試)。


查看完整回答
反對 回復 2023-02-07
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

使用model.fit_generator,并使用(x,y)輸入數據和標簽的元組??偠灾?/p>

model.fit_generator(train_dataset.as_numpy_iterator(),epochs=100)


查看完整回答
反對 回復 2023-02-07
  • 3 回答
  • 0 關注
  • 285 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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