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

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

帶有 Tensorflow 數據集 API 的 Keras 生成器 - IndexError:

帶有 Tensorflow 數據集 API 的 Keras 生成器 - IndexError:

慕無忌1623718 2021-06-03 23:22:54
我需要開發一個 RNN 模型,并希望使用數據生成器來提供訓練/評估循環。首先,我在從 csv 文件中獲取數據時使用了這個幫助功能。RECORD_DEFAULTS_TRAIN = [[0], [0.0], [0.0], [0.0], [0.0], [0.0], [0.0]]def decode_csv(line):   parsed_line = tf.decode_csv(line, RECORD_DEFAULTS_TRAIN)   label =  parsed_line[-1]      # label is the last element of the list   del parsed_line[-1]           # delete the last element from the list   del parsed_line[0]            # even delete the first element bcz it is assumed NOT to be a feature   features = tf.stack(parsed_line)  # Stack features so that you can later vectorize forward prop., etc.   return features, label 這是我的數據生成器功能:def data_generator(file_path_list, batch_size):  filenames = tf.placeholder(tf.string, shape=[None])  dataset = tf.data.Dataset.from_tensor_slices(filenames)  dataset = dataset.flat_map(lambda filename: tf.data.TextLineDataset(filename).skip(1).map(decode_csv))  dataset = dataset.shuffle(buffer_size=1000)  dataset = dataset.batch(batch_size)  iterator = dataset.make_initializable_iterator()  next_element = iterator.get_next()  with tf.Session() as sess:      while True:          sess.run(iterator.initializer, feed_dict={filenames: file_path_list})          while True:                          try:                batch_data, batch_labels = sess.run(next_element)                # Dimension of the data needs to be: (batch_size, length_of_each_sequence, nr_inputs_in_each_timestep)                # Since the last batch in a epoch can have a different size,                # "batch_data.shape[0]" is used instead of batch_size                batch_data = np.reshape(batch_data, (batch_data.shape[0], SEQUENCE_LEN, 1))              except tf.errors.OutOfRangeError:                break              yield (batch_data, batch_labels)
查看完整描述

1 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

解決了。我想解釋這個問題而不是刪除我的帖子,以便它也可以幫助其他人。


我只會給出evaluate_generator(...)函數的例子。這就是我調用函數的方式..


lstm_model.evaluate_generator(data_generator(TEST_FILE_PATHS, TEST_BATCH_SIZE), 

                             steps=(NR_TEST_EXAMPLES // TEST_BATCH_SIZE), 

                             verbose=1)

我將其更改如下:


test_data_generator = data_generator(TEST_FILE_PATHS, TEST_BATCH_SIZE)

lstm_model.evaluate_generator(test_data_generator, 

                              steps=(NR_TEST_EXAMPLES // TEST_BATCH_SIZE), 

                              verbose=1)

問題解決了。我在不同的地方看到了這兩種用法,即使人們在網上找到的每一種信息都不一定是真的。我也不清楚為什么在更改上面的代碼時可以解決它。如果有人知道,我會很高興聽到解釋。


查看完整回答
反對 回復 2021-06-16
  • 1 回答
  • 0 關注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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