- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用数据分析对 ResNet50 模型进行微调,以进行人脸识别,但观察到模型的准确性有所提高,但从一开始的验证准确性并没有提高,我不明白哪里出了问题,请检查我的代码。
我尝试过操作我添加的顶层,但没有帮助。
import os
os.environ['KERAS_BACKEND'] = 'tensorflow'
from keras.applications import ResNet50
from keras.models import Sequential
from keras.layers import Dense, Flatten, GlobalAveragePooling2D,Input,Dropout
num_classes = 13
base = ResNet50(include_top=False, weights='resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5',input_tensor=Input(shape=(100,100,3)))
from keras.models import Model
x = base.output
#x = GlobalAveragePooling2D()(x)
x = Flatten()(x)
x = Dense(1024, activation = 'relu')(x)
x = Dropout(0.5)(x)
predictions = Dense(13, activation='softmax')(x)
model = Model(inputs=base.input, outputs=predictions)
for layers in base.layers:
layers.trainable= False
model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])
from keras.preprocessing.image import ImageDataGenerator
train_generator = ImageDataGenerator(featurewise_center=True,
rotation_range=20,
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)
test_generator = ImageDataGenerator(rescale=1./255)
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(image,label,test_size=0.2,shuffle=True,random_state=0)
train_generator.fit(x_train)
test_generator.fit(x_test)
model.fit_generator(train_generator.flow(x_train,y_train,batch_size=32),
steps_per_epoch =10,epochs=50,
validation_data=test_generator.flow(x_test,y_test))
输出:
Epoch 19/50
10/10 [==============================] - 105s 10s/step - loss: 1.9387 - acc: 0.3803 - val_loss: 2.6820 - val_acc: 0.0709
Epoch 20/50
10/10 [==============================] - 107s 11s/step - loss: 2.0725 - acc: 0.3230 - val_loss: 2.6689 - val_acc: 0.0709
Epoch 21/50
10/10 [==============================] - 103s 10s/step - loss: 1.8884 - acc: 0.3375 - val_loss: 2.6677 - val_acc: 0.0709
Epoch 22/50
10/10 [==============================] - 95s 10s/step - loss: 1.8265 - acc: 0.4051 - val_loss: 2.6799 - val_acc: 0.0709
Epoch 23/50
10/10 [==============================] - 100s 10s/step - loss: 1.8346 - acc: 0.3812 - val_loss: 2.6929 - val_acc: 0.0709
Epoch 24/50
10/10 [==============================] - 102s 10s/step - loss: 1.9547 - acc: 0.3352 - val_loss: 2.6952 - val_acc: 0.0709
Epoch 25/50
10/10 [==============================] - 104s 10s/step - loss: 1.9472 - acc: 0.3281 - val_loss: 2.7168 - val_acc: 0.0709
Epoch 26/50
10/10 [==============================] - 103s 10s/step - loss: 1.8818 - acc: 0.4063 - val_loss: 2.7071 - val_acc: 0.0709
Epoch 27/50
10/10 [==============================] - 106s 11s/step - loss: 1.8053 - acc: 0.4000 - val_loss: 2.7059 - val_acc: 0.0709
Epoch 28/50
10/10 [==============================] - 104s 10s/step - loss: 1.9601 - acc: 0.3493 - val_loss: 2.7104 - val_acc: 0.0709
最佳答案
发生这种情况是因为我只是直接添加全连接层而没有先对其进行训练,正如 keras 博客中提到的, https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html
in order to perform fine-tuning, all layers should start with properly trained weights: for instance you should not slap a randomly initialized fully-connected network on top of a pre-trained convolutional base. This is because the large gradient updates triggered by the randomly initialized weights would wreck the learned weights in the convolutional base. In our case this is why we first train the top-level classifier, and only then start fine-tuning convolutional weights alongside it.
所以答案是首先单独训练顶层模型,然后创建一个具有 ResNet50 模型及其权重的新模型,其中顶层模型及其权重位于 resnet 模型(基础模型)之上,然后首先通过卡住来训练它基础模型(ResNet50)和基础模型的最后一层。
关于machine-learning - 验证准确性并没有提高训练 ResNet50,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53032377/
**摘要:**本实验主要是以基于Caffe ResNet-50网络实现图片分类(仅推理)为例,学习如何在已经具备预训练模型的情况下,将该模型部署到昇腾AI处理器上进行推理。 本文分享自华为云社区《【C
您好,我正在尝试通过微调方法使用 Resnet 神经网络来训练癌症数据集 这是我以前微调它的方法。 image_input = Input(shape=(224, 224, 3)) model = R
我正在尝试使用预训练的 resnet 并使用三元组损失对其进行微调。我想出的以下代码是我在该主题上找到的教程的组合: import pathlib import tensorflow as tf im
我需要获得一些关于深度神经网络的知识。 对于“ResNet”非常深的神经网络,我们可以使用迁移学习来训练模型。 但是 Resnet 已经在 ImageNet 数据集上进行了训练。因此,它们的预训练权重
在我的理解中,全连接层(简称 fc)用于预测。 例如,VGG Net 使用了 2 个 fc 层,它们都是 4096 维。 softmax 的最后一层具有与 num:1000 类相同的维度。 但是对于r
我正在尝试构建一个图像生成器,它将: 获取原始图像 读入图像并将其大小调整为 resnet50 的 (224,224,3) 对其执行数据增强(旋转、翻转等) 为其创建 Resnet50 特征(使用 m
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我尝试使用 Keras ResNet 50 应用程序模型来解决此代码的问题: #Tensorflow and tf.keras import tensorflow as tf from tensorf
我按照这个文档https://arxiv.org/pdf/1512.03385.pdf实现了cifar 10的ResNet但我的准确度与文档中得到的准确度有明显差异我的 - 86%个人电脑女儿 - 9
我正在尝试使用 convolutional residual network neural network architecture (ResNet)。到目前为止,我已经使用 Keras 实现了用于时
常见的‘融合'操作 复杂神经网络模型的实现离不开"融合"操作。常见融合操作如下: (1)求和,求差 # 求和 layers.Add(inputs) # 求
发生此错误,而我的原始代码不包含“导入 resnet”。 似乎在导入 tensorflow 时发生了错误。 Traceback (most recent call last): File "ste
我正在尝试使用我的自定义数据修改 Resnet50,如下所示: X = [[1.85, 0.460,... -0.606] ... [0.229, 0.543,... 1.342]] y = [2,
我训练了 Resnet-50 分类网络来对我的对象进行分类,并使用以下代码来评估网络。 from tensorflow.keras.models import load_model import cv
我正在尝试使用我的自定义数据修改 Resnet50,如下所示: X = [[1.85, 0.460,... -0.606] ... [0.229, 0.543,... 1.342]] y = [2,
我正在尝试使用 Keras 的 resnet 实现来执行具有完全不同的图像集(黑白 16 位)的传输学习任务。那么 Keras 期望输入什么?具有 3 个 channel 和 -127-128 范围的
我想使用来自 Tensorflow 的预训练 ResNet 模型。我下载了 code (resnet_v1.py) 用于模型和 checkpoint (resnet_v1_50.ckpt) 文件 he
我正在尝试重新训练 inception-resnet-v2 的最后一层。这是我想出的: 获取最后一层的变量名 创建一个 train_op 以仅最小化这些变量 wrt 损失 恢复除最后一层之外的整个图,
我下载 Resnet18 模型来训练模型。 当我输入时 model 显示 ResNet( (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2,
我正在尝试在我自己的图像和标签上训练 Tensorflow 官方 resnet 模型 ( link )。 我创建了 imagenet_main.py 的副本( my_data_main.py ) 在那
我是一名优秀的程序员,十分优秀!