单输入,单输出的model使用tf.data.Dataset作为数据输入很方便,定义好数据的input和对应的label,组成一个tf.data.Dataset类型的变量,直接传入由tf.keras.Model构成的模型进行model.fit即可,例如:
a = tf.keras.layers.Input(shape=(368, 368, 3))
conv1 = tf.keras.layers.Conv2D(64, 3, 1)(a)
conv2 = tf.keras.layers.Conv2D(64, 3, 1)(conv1)
maxpool = tf.keras.layers.MaxPooling2D(pool_size=8, strides=8, padding='same')(conv2)
conv3 = tf.keras.layers.Conv2D(5, 1, 1)(maxpool)
inputs = a
outputs = conv3
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=tf.keras.optimizers.SGD(),
loss=tf.keras.losses.mean_squared_error)
import numpy as np
data = np.random.rand(10, 368, 368, 3)
label = np.random.rand(10, 46, 46, 5)
dataset = tf.data.Dataset.from_tensor_slices((data, label)).batch(10).repeat()
model.fit(dataset, epochs=5, steps_per_epoch=30)
如果是多输入,单输出的,则麻烦一点点,需要把生成两个dataset并通过zip函数组合起来,如下面所示