我在 Keras 中有簡(jiǎn)單的自動(dòng)編碼器,我想使用日志記錄到張量板(因此我需要傳遞驗(yàn)證數(shù)據(jù)),并使用 Tensorflow Dataset API 使用預(yù)取從 TFRecord 加載數(shù)據(jù)。我讀了一些關(guān)于它的文章,但他們要么省略了驗(yàn)證管道,要么直接傳遞數(shù)據(jù)而不使用 feed dict 的事實(shí)要慢得多。源代碼是import tensorflow as tffrom keras.losses import mean_squared_errorfrom keras.models import Sequential, Modelfrom keras.layers import Dense, Input, Flatten, Reshape, Convolution2D, Convolution2DTranspose, Conv2D, Conv2DTransposefrom keras.optimizers import Adamfrom keras import backend as Kfrom keras.callbacks import TensorBoarddef create_dataset(tf_record, batch_size): data = tf.data.TFRecordDataset(tf_record) data = data.map(TFReader._parse_example_encoded, num_parallel_calls=8) data = data.apply(tf.data.experimental.shuffle_and_repeat(buffer_size=100)) data = data.batch(batch_size, drop_remainder=True) data = data.prefetch(4) return datadef main(_): batch_size = 8 # todo: check and try bigger data = create_dataset('../../datasets/anime/no-game-no-life-ep-2.tfrecord', batch_size) iterator = data.make_one_shot_iterator() K.set_image_data_format('channels_last') # set format input_tensor = Input(tensor=iterator.get_next()) out = Conv2D(8, (3, 3), activation='elu', border_mode='valid', batch_input_shape=(batch_size, 432, 768, 3))(input_tensor) out = Conv2D(16, (3, 3), activation='elu', border_mode='valid')(out) out = Conv2D(32, (3, 3), activation='elu', border_mode='valid', name='bottleneck')(out) out = Conv2DTranspose(32, (3, 3), activation='elu', padding='valid')(out) out = Conv2DTranspose(16, (3, 3), activation='elu', padding='valid')(out) out = Conv2DTranspose(8, (3, 3), activation='elu', padding='valid')(out) out = Conv2D(3, (3, 3), activation='elu', padding='same')(out) m = Model(inputs=input_tensor, outputs=out) m.compile(loss=mean_squared_error, optimizer=Adam(), target_tensors=iterator.get_next()) print(m.summary())
1 回答

慕村9548890
TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
幾個(gè)選項(xiàng):
您是否看過此鏈接https://github.com/keras-team/keras/issues/3358(juiceboxjoe 的解決方案)?
編寫一個(gè) TensorboardWrapper,它從生成器加載驗(yàn)證數(shù)據(jù)并將其作為回調(diào)傳遞。如果您不關(guān)心驗(yàn)證,請(qǐng)從訓(xùn)練數(shù)據(jù)中加載一兩個(gè)樣本并將它們作為數(shù)組傳遞給 validation_data。
如果不需要直方圖,則設(shè)置 histogram_freq = 0。
添加回答
舉報(bào)
0/150
提交
取消