Keras 拟合在第一个 epoch 结束时冻结

2023-12-25

我目前正在尝试使用 Keras 微调 VGG16 网络。

我开始对猫和狗的数据集进行一些调整。

然而,在当前的配置下,训练似乎在第一个时期被阻止

from keras import applications
from keras.preprocessing.image import ImageDataGenerator
from keras import optimizers
from keras.models import Sequential, Model
from keras.layers import Dropout, Flatten, Dense


img_width, img_height = 224, 224

train_data_dir = 'data/train'
validation_data_dir = 'data/validation'
nb_train_samples = 2000
nb_validation_samples = 800
epochs = 50
batch_size = 20


model = applications.VGG16(weights='imagenet', include_top=False , input_shape=(224,224,3))
print('Model loaded.')


top_model = Sequential()
top_model.add(Flatten(input_shape=model.output_shape[1:]))
top_model.add(Dense(256, activation='relu',name='newlayer'))
top_model.add(Dropout(0.5))
top_model.add(Dense(2, activation='softmax'))


model = Model(inputs= model.input, outputs= top_model(model.output))


for layer in model.layers[:19]:
    layer.trainable = False


model.compile(loss='categorical_crossentropy',
              optimizer=optimizers.Adam(lr=0.0001),
              metrics=['accuracy'])

train_datagen = ImageDataGenerator(
    rescale=1. / 255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1. / 255)

train_generator = train_datagen.flow_from_directory(
    train_data_dir,
    target_size=(img_height, img_width),
    batch_size=batch_size,
    shuffle=True,
    class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
    validation_data_dir,
    target_size=(img_height, img_width),
    batch_size=batch_size,
    class_mode='categorical')


model.fit_generator(
    train_generator,
    steps_per_epoch=nb_train_samples// batch_size,
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps=nb_validation_samples)

最后输出:

纪元 1/50 99/100 [==============================>.] - ETA: 0s - 损失: 0.5174 - 加速器:0.7581

我错过了什么吗?


Shuffle

就我而言,我正在调用 fit(...)shuffle='batch'。从参数中删除此参数解决了问题。 (我认为这是一个 TensorFlow bug,但我没有深入研究它。)

验证

另一个考虑因素是验证是在纪元结束时执行的...如果您的验证数据没有被批量处理,特别是如果您正在填充数据,那么您可能会对比训练批次大得多的数据执行验证size 填充到验证数据的最大样本长度。这可能是内存不足的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keras 拟合在第一个 epoch 结束时冻结 的相关文章

随机推荐

  • 在 RDF 中对数据库 NULL 的等价物进行建模

    我想知道是否有一种标准或普遍接受的方法来表示 RDF 数据数据库中使用的 NULL 的等效项 更具体地说 我对区分以下情况的值感兴趣o财产的p p是谓词 oRDF 三元组的对象 其值为不适用 即财产p不存在或在上下文中没有意义 其值为unk
  • 在 C 中读取 .csv 文件

    我有一个 csv 文件 lp imie nazwisko ulica numer kod miejscowosc telefon email data ur 1 Jan Kowalski ul Nowa 1a 11 234 Budry 12
  • 内存屏障的传递性/累积性属性是如何在微架构上实现的?

    我一直在阅读有关 x86 内存模型的工作原理 x86 上屏障指令的重要性以及与其他架构 例如 ARMv8 的比较 在 x86 和 ARMv8 架构中 似乎 没有双关语 内存模型尊重传递性 累积性 即如果 CPU 1 看到 CPU0 的存储
  • 使用 llvm 后端编译 haskell .ll 文件时出错

    我想使用 ghc 前端和 llvm 后端编译 haskell 我的 haskell hello hs 文件中有以下代码 main putStrLn Hello World 我使用以下命令用 ghc 编译 hello hs ghc fllvm
  • 长轮询,“全局”按钮,向所有人广播?

    我正在尝试实现一个全局按钮计数器 该计数器会在任何 不同用户单击它时更新 因此 我们的想法是 如果一个人单击该按钮 我会在页面实例上看到计数器更新 我目前的长轮询技术正在工作 或者我认为是这样 但经过审查 我相信我在向所有浏览器 广播 更新
  • 使用 Neo4j 批量插入

    我正在从表中导入 23 亿个关系 导入速度不是很快 每小时 500 万个 需要 20 天才能完成迁移 我听说过 neo4j 批量插入和批量插入实用程序 https github com jexp batch import 该实用程序通过从
  • 如何根据 powershell 中对象的两个属性来选择唯一的对象?

    我有一个具有 6 个属性的对象数组 看起来像这样 csvData CURRENT DATE AND TIME 07 10 2015 08 17 17 CST USER NAME userName COMPUTER NAME computer
  • 使用反射获取 linq 查询中的选择字段

    我正在使用 Linq 进行查询 并且希望能够使用反射在 选择 部分中获取我想要返回的属性列表 我已尝试以下方法但无济于事 string paramList new AppId Name var query from entity in ct
  • 自定义表格视图背景的 UITableViewCell 颜色问题

    我有一个 UITableView 其自定义背景图像设置如下 self tableView backgroundColor UIColor colorWithPatternImage UIImage imageNamed mybg png 背
  • DataInputStream/DataOutputStream类与InputStream/OutputStream类之间的区别

    每当我使用HttpConnection班级于Java ME Android or in BlackBerry 我用DataInputStream DataOutputStream用于通过远程服务器读取和写入数据的类 然而还有其他类 例如In
  • Get-EventLog - 轻松按“今天”过滤?

    我想快速检查今天发生的事件 即 从午夜开始的任何事件 Powershell 中是否有 今天 别名 内置功能可以帮助解决此问题 我目前正在做这样的事情 get eventlog system source disk after datetim
  • 拒绝类,因为它未通过编译时验证

    我正在尝试将来自 openwhispersystems 的 curve25519 java 集成到我的 Android 应用程序中 并使用 API 23 Marshmallow 进行编译 使用非本机代码时 我收到此运行时异常 java la
  • 我应该更改什么才能使该文件编译?

    我正在上编程课 这个程序是我作业的一部分 该文件分析名为 Names txt 的文件中的数据 然后打印信息 我收到编译错误 我想知道需要更改或添加哪些内容才能成功编译 这是我的代码 import java util Scanner impo
  • 更改 ImageView 内容会导致 OutOfMemoryError

    我有一个非常简单的应用程序 包含一个 ImageView 和一个 Button 我加载的第一个 Drawable 资源图像视图在 XML 布局中用 android src 标签指定 但是在运行时我想改变它显示的图片 为此 我启动一个活动以从
  • 压缩 (zip) 无法创建输出文件 - 错误

    我正在使用 VBscript 扫描文件夹 创建 zip 文件并向其中添加文件 压缩 但是当我在包含大量文件的文件夹上运行脚本时 出现以下错误 压缩 zip 无法创建输出文件 我的邮政编码处理代码如下 Dim objFSO Set objFS
  • 如何在视图刀片 Laravel 5.3 中显示空间?

    我在数据库中的记录是这样的 我想用空格显示 我尝试这样 nl2br text and nl2br e text 这是行不通的 我该如何解决 你尝试过使用 nbsp 在这里你可以使用 HTML 实体
  • 使用 @font-face 时,SVG 文本边框因浏览器而异?

    我试图通过使用 getBBox 方法获取边界框来根据文本的宽度和高度放置 SVG 文本元素 如果文本使用网络安全字体 则在不同浏览器中效果相当好 但如果使用 font face 和自定义网络字体设置文本样式 则在 Firefox Mac 和
  • JavaScript:推入对象内的数组?

    问题 如何将一个数组推入对象内的另一个数组 示例编码 var myObj arrayOne arrayTwo var arrayLetters A B obj arrayOne push arrayLetters RESULT arrayO
  • 在 JTable 中的单元格上方显示工具提示

    当用户在单元格中输入错误的值时 我需要在单元格上方 或下方 显示工具提示 参见下图 我有一个工具提示 但我需要一个点来将其显示在正确的位置 所以我想获取一个单元格位置 你知道如何得到这个吗 但是 如果您有更好的解决方案来实现这种行为 我愿意
  • Keras 拟合在第一个 epoch 结束时冻结

    我目前正在尝试使用 Keras 微调 VGG16 网络 我开始对猫和狗的数据集进行一些调整 然而 在当前的配置下 训练似乎在第一个时期被阻止 from keras import applications from keras preproc