Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >CNN图像二值分类准确率50%

CNN图像二值分类准确率50%
EN

Stack Overflow用户
提问于 2020-06-18 07:53:38
回答 1查看 709关注 0票数 0

我有一组睁开和闭着眼睛的照片。

数据是通过这种方式从当前目录中使用keras收集的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
batch_size = 64
N_images = 84898 #total number of images
datagen = ImageDataGenerator(
    rescale=1./255)
data_iterator = datagen.flow_from_directory(
    './Eyes',
    shuffle = 'False',
    color_mode='grayscale',
    target_size=(h, w),
    batch_size=batch_size,
    class_mode = 'binary')

我有一个.csv文件,每只眼睛都有状态。

我已经建立了这个顺序模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
num_filters = 8
filter_size = 3
pool_size = 2

model = Sequential([
  Conv2D(num_filters, filter_size, input_shape=(90, 90, 1)),
  MaxPooling2D(pool_size=pool_size),
  Flatten(),
  Dense(16, activation='relu'),
  Dense(2, activation='sigmoid'), # Two classes. one for "open" and another one for "closed"
])

模型编制。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model.compile(
    'adam',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

最后,我将所有数据与以下内容相结合:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model.fit(
  train_images,
  to_categorical(train_labels),
  epochs=3,
  validation_data=(test_images, to_categorical(test_labels)),
)

结果在50%左右波动,我不明白为什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 09:45:44

你现在的模型基本上只有一个卷积层。也就是说,定义和匹配num_filters卷积滤波器(在本例中为3x3数组),以便当它们与图像卷积时,它们产生的特征在类之间尽可能具有区分性。然后执行You池,在传递到2个密集层之前稍微减少输出CNN功能的维数。

我首先要说的是,一个卷积层几乎肯定是不够的,特别是3x3过滤器。基本上,用一个卷积层,你能得到的最有意义的信息是边或线。对于函数逼近器(即完全连接的层)来说,这些特性仅比原始像素强度值更有用,因为它们在类内和类之间仍然具有极高的可变性。考虑一下,将一只眼睛2像素的图像向左移动会导致与你的一层CNN完全不同的输出值。您希望您的CNN输出是不变的规模,旋转,照明等。

在实践中,这意味着你需要更多的卷积层,相对简单的网至少有14个卷积层,而现代基于剩余层的网络通常有超过100个卷积层。尝试编写一个例程来定义顺序更复杂的网络,直到您开始看到性能的提高。

作为次要问题,通常您不希望在培训期间在最后一层输出中使用sigmoid()激活函数。这会使渐变变平,并使你的损失更慢。实际上,您并不关心输出值介于0到1之间,您只关心它们的相对大小。通常的做法是使用交叉熵损失,它结合了loss函数(梯度比正常的softmax更稳定)和负的日志似然损失,就像您已经做过的那样。因此,由于log部分将输出值转换为所需的范围,因此不需要使用sigmoid激活函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62454130

复制
相关文章
4个代码中,出现频率最高的字符串
在程序员的代码里,字符串是经常出现的形式。有些语句虽然没有什么意义,但却无孔不入,我们经常见到它的身影。
xjjdog
2020/05/29
7170
50 - 得到文件中出现频率最高的字符
现在有一个文本文件,需要得到该文本文件中出现次数最多的字符,最后输出该字符和出现的次数,空白符除外 ''' 1. 读文件内容 2. 统计字符数 3. 求出现次数最多的字符 统计每一个字符在文件中出现的次数,然后每扫描到一个字符时,再更新当前出现次数最多的字符 ''' with open('files/readme.txt', 'r') as f: data = f.read() print(data) ''' kry: 在文本文件中出现的字符 value: int类型,表示key指定
ruochen
2021/05/29
5930
php sphinx 全文检索 中文分词
高久峰
2023/06/03
6030
python 统计文件中单词出现的频率
index = {} with open(sys.argv[1], encoding='utf-8') as fp: for line_no, line in enumerate(fp, 1): for match in WORD_RE.finditer(line): word = match.group() column_no = match.start()+1 location = (line_no, column_no) # this is ugly; coded like this to make a point occurrences = index.get(word, []) # <1> occurrences.append(location) # <2> index[word] = occurrences # <3>
用户5760343
2019/07/31
1.9K0
如何使用linux命令统计文本中某个单词的出现频率
cat words.txt |tr -cs "[a-z][A-Z]" "[\012*]"|tr A-Z a-z|sort|uniq -c|sort -k1nr -k2|head -10
用户5166556
2019/04/16
3.4K0
python 统计文件中单词出现的频率2
index = {} with open(sys.argv[1], encoding='utf-8') as fp: for line_no, line in enumerate(fp, 1): for match in WORD_RE.finditer(line): word = match.group() column_no = match.start()+1 location = (line_no, column_no) index.setdefault(word, []).append(location) # <1>
用户5760343
2019/07/31
1.3K0
Oracle 中的SELECT 关键字(查询、检索)
检索单个列:select 列名 from 表名; 例:select ename from emp; 检索多个列: select [列1,列2, ... ,列N] from 表名; 例:select ename , sal from emp; 检索所有列:select * from 表名; 例:select * from emp;
星哥玩云
2022/08/18
4.1K0
Sphinx 全文搜索引擎
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。
lilugirl
2019/05/26
1.4K0
Sphinx&coreseek实现中文分词索引
众所周知,mysql等数据库的LIKE模糊搜索不支持索引,因此查询效率极低,需要结合第三方索引引擎程序(索引程序)来提高查询性能。
CS逍遥剑仙
2018/10/11
1.6K0
Sphinx&coreseek实现中文分词索引
Sphinx源码学习笔记(一):索引创建
  因为项目开发需要在游戏内部实现玩家名称的模糊查找功能,本身直接使用Sphinx配置mysql可以直接搭建一套模糊匹配的即可支持功能的实现。
dylan_若水
2018/06/21
2.2K0
如何从 Python 列表中删除所有出现的元素?
在 Python 中,列表是一种非常常见且强大的数据类型。但有时候,我们需要从一个列表中删除特定元素,尤其是当这个元素出现多次时。本文将介绍如何使用简单而又有效的方法,从 Python 列表中删除所有出现的元素。
网络技术联盟站
2023/06/01
12.3K0
php简单使用sphinx 以及增量索引和主索引来实现索引的实时更新
Why/为什么使用Sphinx? 遇到一个类似这样的需求:用户可以通过文章标题和文章搜索到一片文章的内容,而文章的标题和文章的内容分别保存在不同的库,而且是跨机房的这种类似的例子。 sphinx 官网下载地址(这里根据自己的情况选择相应的版本下载即可) 这里我下载的是sphinx-3.1.1-release-win64.zip,将下载的文件解压,解压后将文件夹重命名为sphinx(方便后续操作,目录结构如下图所示) sphinx 目录结构
友儿
2022/09/11
1.1K0
Elasticsearch 如何做到快速检索 - 倒排索引的秘密
最近接触的几个项目都使用到了 Elasticsearch (以下简称 ES ) 来存储数据和对数据进行搜索分析,就对 ES 进行了一些学习。本文整理自我自己的一次技术分享。
肉眼品世界
2021/09/27
1.8K0
Elasticsearch 如何做到快速检索 - 倒排索引的秘密
PHPCMS如何配置sphinx
首先得看官方配置教程,http://v9.help.phpcms.cn/html/2010/search_0919/35.html phpcms后台sphinx设置
李维亮
2021/07/09
13.5K0
Linux 统计文档中各个字母出现的次数,显示各个字母出现的频率
2. 第二个参数是文件名称,默认是在当前目录下,我的测试文本是jiangxingqi
week
2018/08/24
1.8K0
Linux 统计文档中各个字母出现的次数,显示各个字母出现的频率
信息检索:布尔检索-建立倒排索引(2)
倒排索引用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。假定我们有3个文档:
超级大猪
2019/11/21
1.4K0
SAS统计一篇文章中各字母的出现频率
今天偶然看到一个古老的帖子:统计一篇文章中各字母的出现的次数和频率。先说统计单词的问题。最直接的方法应该是将文章按单词分成多行,每行一个单词,再用PROC FREQ即可求得频数和频率。程序如下:
专业余码农
2020/07/15
1.4K0
【Oracle】-【ROWNUM与索引】-索引对ROWNUM检索的影响
看到ASK TOM的一篇文章,挺有感触的。 http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:32812348052
bisal
2019/01/29
1K0
点击加载更多

相似问题

索引出现频率最高的元素

20

检索PIG中出现频率最高的值

23

如何选择出现频率最高的值?

20

Sphinx / Solr用于关键字/频率查询

21

从mysql或sphinx生成排序关键字(基于频率)

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文