首页 > 分享 > tensorflow 迁移学习 transfer learning

tensorflow 迁移学习 transfer learning

在各种神经网络结构中,前面很多层(卷积、池化)可以看做是特征提取的过程,比如提取图像的各种纹理、颜色、线条等等。最后几层(全连接层),一般将提取好的特征进行压缩,用于分类

训练大型网络,需要很好的设备,也需要很长的时间。迁移学习,就是将一个问题上训练好的模型参数,通过简单的调整使其适用于一个新的问题,一般保留前面N层(瓶颈层)的参数,重新训练最后的全连接层,这样做,可以节省大量时间,得到的效果也不赖。

以下代码,利用Google的Inception-v3模型,对花数据集进行分类。

数据集下载地址

Inception v3模型下载地址

花数据集有以下几个目录,每个目录就是一个种类的花:

import glob

import os.path

import random

import numpy as np

import tensorflow as tf

from tensorflow.python.platform import gfile

BOTTLENECK_TENSOR_SIZE=2048

BOTTLENECK_TENSOR_NAME='pool_3/_reshape:0'

JPEG_DATA_TENSOR_NAME='DecodeJpeg/contents:0'

MODEL_DIR='E:/程序/Jupyter/data'

MODEL_FILE='tensorflow_inception_graph.pb'

CACHE_DIR='E:/程序/Jupyter/data/tmp/bottleneck'

INPUT_DATA='E:/程序/Jupyter/data/flower_photos'

VALIDATION_PERCENTAGE=10

TEST_PERCENTAGE=10

LEARNING_RATE=0.01

STEPS=4000

BATCH=100

 这个函数,用来把图片数据集随机分成训练集、验证集和测试集。 

def create_image_lists(test_pct,val_pct):

result={}

sub_dirs=[x[0] for x in os.walk(INPUT_DATA)]

for sub_dir in sub_dirs[1:]:

extensions=['jpg','jpeg','JPG','JPEG']

file_list=[]

dir_name=os.path.basename(sub_dir)

for extension in extensions:

file_glob=os.path.join(INPUT_DATA,dir_name,'*.'+extension)

file_list.extend(glob.glob(file_glob))

if not file_list:continue

label_name=dir_name.lower()

training_images=[]

testing_images=[]

validation_images=[]

for file_name in file_list:

base_name=os.path.basename(file

'

相关知识

基于深度学习和迁移学习的识花实践
基于深度迁移学习的农业病害图像识别
使用迁移学习对花卉进行分类
TensorFlow学习记录(八)
机器学习(04)——常用专业术语2
如何翻译和解释机器学习术语?请看 Google 官方答案 下
深度学习入门——基于TensorFlow的鸢尾花分类实现(TensorFlow
应用卷积神经网络识别花卉及其病症
干货来袭,谷歌最新机器学习术语表
AI实战圣经《Machine Learning Yearning》第1

网址: tensorflow 迁移学习 transfer learning https://m.huajiangbk.com/newsview478101.html

所属分类:花卉
上一篇: 种植凤仙花需要的工具和材料
下一篇: 树莓派实现自动浇花程序