- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是机器学习的新手,正在学习 fast.ai 上的类(class).我们正在学习 vgg16,但我在保存我的模型时遇到了问题。我想知道我做错了什么。当我从头开始我的模型,训练以了解猫和狗之间的区别时,我得到:
from __future__ import division,print_function
from vgg16 import Vgg16
import os, json
from glob import glob
import numpy as np
from matplotlib import pyplot as plt
import utils; reload(utils)
from utils import plots
np.set_printoptions(precision=4, linewidth=100)
batch_size=64
path = "dogscats/sample"
vgg = Vgg16()
# Grab a few images at a time for training and validation.
# NB: They must be in subdirectories named based on their category
batches = vgg.get_batches(path+'/train', batch_size=batch_size)
val_batches = vgg.get_batches(path+'/valid', batch_size=batch_size*2)
vgg.finetune(batches)
no_of_epochs = 4
latest_weights_filename = None
for epoch in range(no_of_epochs):
print ("Running epoch: %d" % epoch)
vgg.fit(batches, val_batches, nb_epoch=1)
latest_weights_filename = ('ft%d.h5' % epoch)
vgg.model.save_weights(path+latest_weights_filename)
print ("Completed %s fit operations" % no_of_epochs)
Found 160 images belonging to 2 classes.
Found 40 images belonging to 2 classes.
Running epoch: 0
Epoch 1/1
160/160 [==============================] - 4s - loss: 1.8980 - acc: 0.6125 - val_loss: 0.5442 - val_acc: 0.8500
Running epoch: 1
Epoch 1/1
160/160 [==============================] - 4s - loss: 0.7194 - acc: 0.8563 - val_loss: 0.2167 - val_acc: 0.9500
Running epoch: 2
Epoch 1/1
160/160 [==============================] - 4s - loss: 0.1809 - acc: 0.9313 - val_loss: 0.1604 - val_acc: 0.9750
Running epoch: 3
Epoch 1/1
160/160 [==============================] - 4s - loss: 0.2733 - acc: 0.9375 - val_loss: 0.1684 - val_acc: 0.9750
Completed 4 fit operations
但是现在当我加载其中一个权重文件时,模型从头开始!例如,我希望下面的模型具有 0.9750 的 val_acc!我是误会了什么还是做错了什么?为什么这个加载模型的 val_acc 这么低?
vgg = Vgg16()
vgg.model.load_weights(path+'ft3.h5')
batches = vgg.get_batches(path+'/train', batch_size=batch_size)
val_batches = vgg.get_batches(path+'/valid', batch_size=batch_size*2)
vgg.finetune(batches)
vgg.fit(batches, val_batches, nb_epoch=1)
Found 160 images belonging to 2 classes.
Found 40 images belonging to 2 classes.
Epoch 1/1
160/160 [==============================] - 6s - loss: 1.3110 - acc: 0.6562 - val_loss: 0.5961 - val_acc: 0.8250
最佳答案
问题出在finetune
函数上。当您深入了解它的定义时:
def finetune(self, batches):
model = self.model
model.pop()
for layer in model.layers: layer.trainable=False
model.add(Dense(batches.nb_class, activation='softmax'))
self.compile()
... 可以看到,通过调用 pop
函数 - 模型的最后一层被删除。通过这样做,您将丢失来自训练有素的模型的信息。最后一层再次添加随机权重,然后再次开始训练。这就是准确率下降的原因。
关于python - model.save_weights 和 model.load_weights 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526260/
我想造成损失。 (情节)我使用 Mask-RCNN。我从模型中加载了权重。但我无法创建损失函数。我收到错误:“模型”对象没有属性“历史记录” model = modellib.MaskRCNN(mod
我正在使用 Keras 库在 Python 中创建神经网络。我已经加载了训练数据(txt 文件),启动了网络并“拟合”了神经网络的权重。然后我编写了代码来生成输出文本。这是代码: #!/usr/bin
我在 Linux 平台上用 keras(回归)训练了一个模型,并用 model.save_weights("kwhFinal.h5") 保存了模型 然后我希望将我完整保存的模型带到我的 Windows
我是机器学习的新手,正在学习 fast.ai 上的类(class).我们正在学习 vgg16,但我在保存我的模型时遇到了问题。我想知道我做错了什么。当我从头开始我的模型,训练以了解猫和狗之间的区别时,
我尝试在 colab 中使用对象检测进行分类。我正在使用“ssd_resnet101_v1_fpn_640x640_coco17_tpu-8.config”当我开始训练时出现错误。 训练= !pyth
我是一名优秀的程序员,十分优秀!