标签:图片 wan com turn one enc json 记录 默认
小白一个,刚刚费了老大的劲完成一个练手项目——image caption,虽然跑通了,但是评估结果却惨不忍睹。于是贴上大神的作品,留待日后慢慢消化。顺便记录下自己踩坑的一些问题。
本次项目采用的模型结构如下。一路输入信息是利用VGG16提取的图像特征,另一路输入信息是利用LSTM提取的单词串特征,输出是预测的下一个单词。即模型的功能是,在给定图像特征和caption前面若干个单词的情况下,能预测出caption的下一个单词;所以循环若干次后即可得到一句完整的caption。采用的数据集是Flicker8K。
目前效果不怎么好,虽然能完整输出一句话,并且有些对象还能沾些边,但大部分都张冠李戴。暂认为可以从这几个方面进行改进:试试其他模型结构(比如Seq2Seq等),增加注意力机制,采用更大的数据集,网络调参。
提到交叉验证并非就特指k折交叉验证。交叉验证包括3种:简单交叉验证、k折交叉验证、留一交叉验证。
yield、next、send:
模型保存:
model_json = model.to_json()
with open("model_architecture.json", "w") as f_obj:
f_obj.write(model_json)
model.save_weights("model_weights.h5")
model.save('model.h5')
模型载入:
model = keras.models.model_from_json(open('model_architecture.json').read())
model.load_weights('model_weight_epoch_1.h5')
model = keras.models.load_model('CIFAR10_model_epoch_1.h5')
其他保存文件:
np.save('bottleneck_features.npy', x_train_Dense) # 将提取出的特征保存在.npy文件中
train_data = np.load('bottleneck_features.npy')
pickle.dump(svm_classifier, open('svm_model_iris.pkl', 'wb')) #写入文件,需要二进制操作
model = pickle.load(open('svm_model_iris.pkl', 'rb'))
#下面还未见过应用
pickle.dumps(obj) #不需要写入文件中,直接返回一个序列化的bytes对象
pickle.loads(bytes_object) #直接从bytes对象中读取序列化的信息
参考
main_input = Input(shape=(100,), dtype=‘int32‘, name=‘main_input‘)
x = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)
LSTM重要参数:keras.layers.LSTM(units, activation=‘tanh‘,return_sequences=False, return_state=False),其中units为\(a^{<t>}\)和\(C^{<t>}\)的神经元个数。
LSTM中两个参数(return_sequences, return_state)的理解:
LSTM中参数activation和recurrent_activation,暂时理解成前者为求\(\tilde C\)和\(a\)的激活函数,后者为求三大门的激活函数。(待验证。)
keras中自带了一些经典模型,比如VGG、ResNet、Inception等;并提供了这些模型的常见应用场景,比如利用ResNet50分类识别,利用VGG16提取图像特征,抽取模型中间层的输出来提取特征等等。(详见文档中Preprocessing模块的Applications。)
模型抽取:(模型抽取参考)
模型冻结:(模型冻结参考)
模型fine-tune:模型微调参考【待消化】
text_to_word_sequence如何添加自定义过滤词?比如加‘s
三种常用函数:
2.项目中利用VGG16提取图像特征前对图像预处理,为啥要把RGB转为BGR?这个VGG16训练时前处理是用BGR?
20191011注:keras.applications.vgg16.preprocess_input中根据不同的模式进行了通道互换(将RGB转为BGR)和通道零均值化(每个通道减去各自均值),源代码见D:\Anaconda3\Lib\site-packages\keras_applications\imagenet_utils.py。(至于为啥要由RGB转为BGR,推测可能是VGG16模型训练时候用了OpenCV,因为只有OpenCV用的BGR格式)
标签:图片 wan com turn one enc json 记录 默认
原文地址:https://www.cnblogs.com/inchbyinch/p/11666924.html