我正在嘗試使用本地二進制資料來訓練網路以執行回歸推理。
每個本地二進制資料具有以下布局:

整個資料由幾個 *.bin 檔案組成,布局如上。每個檔案都有可變數量的 403*4 位元組序列。我能夠使用以下代碼讀取其中一個檔案:
import tensorflow as tf
RAW_N = 2 20*20 1
def convert_binary_to_float_array(register):
return tf.io.decode_raw(register, out_type=tf.float32)
raw_dataset = tf.data.FixedLengthRecordDataset(filenames=['mydata.bin'],record_bytes=RAW_N*4)
raw_dataset = raw_dataset.map(map_func=convert_binary_to_float_array)
現在,我需要創建 4 個資料集train_data, train_labels, test_data,test_labels如下所示:
train_data, train_labels, test_data, test_labels = prepare_ds(raw_dataset, 0.8)
并使用它們來訓練和評估:
model = build_model()
history = model.fit(train_data, train_labels, ...)
loss, mse = model.evaluate(test_data, test_labels)
我的問題是:如何實作功能prepare_ds(dataset, frac)?
def prepare_ds(dataset, frac):
...
我嘗試使用tf.shape, tf.reshape, tf.slice, subscription [:] 沒有成功。我意識到這些函式不能正常作業,因為在map()呼叫之后raw_dataset是 a MapDataset(由于急切的執行問題)。
uj5u.com熱心網友回復:
如果元資料假設是您輸入的一部分,我假設,您可以嘗試這樣的事情:
import random
import struct
import tensorflow as tf
import numpy as np
RAW_N = 2 20*20 1
bytess = random.sample(range(1, 5000), RAW_N*4)
with open('mydata.bin', 'wb') as f:
f.write(struct.pack('1612i', *bytess))
def decode_and_prepare(register):
register = tf.io.decode_raw(register, out_type=tf.float32)
inputs = register[:402]
label = register[402:]
return inputs, label
total_data_entries = 8
raw_dataset = tf.data.FixedLengthRecordDataset(filenames=['/content/mydata.bin', '/content/mydata.bin'], record_bytes=RAW_N*4)
raw_dataset = raw_dataset.map(decode_and_prepare)
raw_dataset = raw_dataset.shuffle(buffer_size=total_data_entries)
train_ds_size = int(0.8 * total_data_entries)
test_ds_size = int(0.2 * total_data_entries)
train_ds = raw_dataset.take(train_ds_size)
remaining_data = raw_dataset.skip(train_ds_size)
test_ds = remaining_data.take(test_ds_size)
請注意,出于演示目的,我兩次使用相同的 bin 檔案。運行該代碼片段后,您可以將資料集提供給您的模型,如下所示:
model = build_model()
history = model.fit(train_ds, ...)
loss, mse = model.evaluate(test_ds)
因為每個資料集都包含輸入和相應的標簽。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/408856.html
標籤:
上一篇:"ValueError:Input0oflayer"sequential"isincompatiblewiththelayer"在預測中
