关于tensorflow的一些参数啥的,建议大家可以去官网看看,很多细节还是可以参考和修改的。
Tensorflow2.0开始,开始全面配合keras,包括模型的搭建,还是模型的训练都是用keras,不过是更加鼓励的tf.keras,包括模型的搭建等等都是tf.keras. 借着贵司的项目,我将使用tensorflow进行数据的预处理,这里没有用keras的imagegenerator,因为预处理的其中一种操作里面是没有的,而且用tf的数据处理的方式会更多。然后我们全部import的是tf.keras.
关于tensorflow2.0开始,关于keras和tensorflow,keras的关系可以参考这篇文章咯 :
tensorflow2.0开始,用keras还是tf.keras
整个过程分成多步:
1.数据预处理部分
2.模型生成部分
3.训练部分(优化器等超参数的设置,这里涉及到2.0开始的多GPU的运行)
– 数据预处理部分
1.数据预处理部分:主要使用了
tf.io.read_file(filename) (这里是读取文件,任何文件都会被读取,所以注意读取到非图像文件带来的错误)
tf.image这里面有很多的预处理方法,详细可以参考我的另一篇文章 参考文章
tf.constant 生成参数,比如生成标签等
tf.reshape(total_label,(-1, 1)) #保持维度一致哦
train_dataset = tf.data.Dataset.from_tensor_slices((total_train, total_label))
train_dataset = train_dataset.map(_image_process)
train_dataset = train_dataset.shuffle(buffer_size=40000)
train_dataset = train_dataset.batch(batch_size)
关于tf.data.Dataset.from_tensor_slices 参考链接
预处理的部分主要包括了:预处理操作,标签的生成,标签和数据的合成,合成数据的使用等等,还有就是验证集合的生成,还有shuffle的使用以及batchsize的使用。修改前
def _image_process(filename,label):
image_string = tf.io.read_file(filename)
image_decoded = tf.image.decode_jpeg(image_string)
image_resized = tf.image.resize(image_decoded, [int(360*224/640), 224],method=tf.image.ResizeMethod.BILINEAR) / 255.0
image_padding = tf.image.pad_to_bounding_box(image_resized, of