重塑 BatchDataset 训练模型的输入
Reshape the input for BatchDataset trained model
我在将图像转换为 BatchDataset 后在图像上训练了我的 tensorflow 模型
IMG_size = 224
INPUT_SHAPE = [None, IMG_size, IMG_size, 3] # 4D input
model.fit(x=train_data,
epochs=EPOCHES,
validation_data=test_data,
validation_freq=1, # check validation metrics every epoch
callbacks=[tensorboard, early_stopping])
model.compile(
loss=tf.keras.losses.CategoricalCrossentropy(),
optimizer=tf.keras.optimizers.Adam(),
metrics=["accuracy"]
)
model.build(INPUT_SHAPE)
train_data
类型是:
tensorflow.python.data.ops.dataset_ops.BatchDataset
.
我想 运行 我的模型在单个 numpy 数组或张量常量上,但它将是 3D 输入矩阵而不是 4D 作为输入 TensorShape([224, 224, 3])
;我该如何重塑它?
您可以使用以下代码扩展图像矩阵的维度:
newImage = tf.expand_dims(Original_Image, axis = 0)
然后传给预测函数,就可以了。
目标大小使所有输入成为相同的形状。
对输入形状很有帮助,也可以使用图像函数来扩大维度。 img_array = tf.expand_dims(image, 0) # 创建一个批次
谈论你的输入 INPUT_SHAPE = [None, IMG_size, IMG_size, 3] # 4D 输入你可以通过图像训练数据集和馈入模型。
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Variables
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
BATCH_SIZE = 16
IMG_SIZE = (160, 160)
PATH = 'F:\datasets\downloads\sample\cats_dogs\training'
training_directory = os.path.join(PATH, 'train')
validation_directory = os.path.join(PATH, 'validation')
train_dataset = tf.keras.utils.image_dataset_from_directory(training_directory,
shuffle=True,
batch_size=BATCH_SIZE,
image_size=IMG_SIZE,
seed=42)
validation_dataset = tf.keras.utils.image_dataset_from_directory(validation_directory,
shuffle=True,
batch_size=BATCH_SIZE,
image_size=IMG_SIZE,
seed=42)
class_names = train_dataset.class_names
print( "class_names: " + str( class_names ) )
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
DataSet
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
AUTOTUNE = tf.data.experimental.AUTOTUNE
train_dataset = train_dataset.prefetch(buffer_size=AUTOTUNE)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Model ( examine input layer )
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
inputs = tf.keras.Input(shape=(160, 160, 3))
model = tf.keras.Model(inputs, outputs)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Training
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
history = model.fit(train_dataset, epochs=initial_epochs, validation_data=validation_dataset)
...
我在将图像转换为 BatchDataset 后在图像上训练了我的 tensorflow 模型
IMG_size = 224
INPUT_SHAPE = [None, IMG_size, IMG_size, 3] # 4D input
model.fit(x=train_data,
epochs=EPOCHES,
validation_data=test_data,
validation_freq=1, # check validation metrics every epoch
callbacks=[tensorboard, early_stopping])
model.compile(
loss=tf.keras.losses.CategoricalCrossentropy(),
optimizer=tf.keras.optimizers.Adam(),
metrics=["accuracy"]
)
model.build(INPUT_SHAPE)
train_data
类型是:
tensorflow.python.data.ops.dataset_ops.BatchDataset
.
我想 运行 我的模型在单个 numpy 数组或张量常量上,但它将是 3D 输入矩阵而不是 4D 作为输入 TensorShape([224, 224, 3])
;我该如何重塑它?
您可以使用以下代码扩展图像矩阵的维度:
newImage = tf.expand_dims(Original_Image, axis = 0)
然后传给预测函数,就可以了。
目标大小使所有输入成为相同的形状。
对输入形状很有帮助,也可以使用图像函数来扩大维度。 img_array = tf.expand_dims(image, 0) # 创建一个批次
谈论你的输入 INPUT_SHAPE = [None, IMG_size, IMG_size, 3] # 4D 输入你可以通过图像训练数据集和馈入模型。
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Variables
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
BATCH_SIZE = 16
IMG_SIZE = (160, 160)
PATH = 'F:\datasets\downloads\sample\cats_dogs\training'
training_directory = os.path.join(PATH, 'train')
validation_directory = os.path.join(PATH, 'validation')
train_dataset = tf.keras.utils.image_dataset_from_directory(training_directory,
shuffle=True,
batch_size=BATCH_SIZE,
image_size=IMG_SIZE,
seed=42)
validation_dataset = tf.keras.utils.image_dataset_from_directory(validation_directory,
shuffle=True,
batch_size=BATCH_SIZE,
image_size=IMG_SIZE,
seed=42)
class_names = train_dataset.class_names
print( "class_names: " + str( class_names ) )
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
DataSet
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
AUTOTUNE = tf.data.experimental.AUTOTUNE
train_dataset = train_dataset.prefetch(buffer_size=AUTOTUNE)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Model ( examine input layer )
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
inputs = tf.keras.Input(shape=(160, 160, 3))
model = tf.keras.Model(inputs, outputs)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Training
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
history = model.fit(train_dataset, epochs=initial_epochs, validation_data=validation_dataset)
...