今天的基础研究主要是在cifar10数据集上解决一下几个问题:

1、从头开始,从最简单的序贯开始,尝试model的构造;
2、要将模型打印出来。最好是能够打印出图片,否则也要summary;
3、尝试对例子的参数进行分析,得出初步修改意见。

1、构建模型
num_classes =
data_augmentation =
save_dir = os.path.join(os.getcwd(), ], ],
x_test /=

, )

)
])
])


2、要将模型打印出来,目前只有本地才有图片。这个图片也可以本地看。
Using TensorFlow backend.
x_train shape: (50000, 32, 32, 3)
50000 train samples
10000 test samples
_________________________________________________________________
Layer (type)                 Output Shape              Param #  
=================================================================
conv2d_1 (Conv2D)            (None, 32, 32, 32)        896      
_________________________________________________________________
activation_1 (Activation)    (None, 32, 32, 32)        0        
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 30, 30, 32)        9248     
_________________________________________________________________
activation_2 (Activation)    (None, 30, 30, 32)        0        
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 15, 15, 32)        0        
_________________________________________________________________
dropout_1 (Dropout)          (None, 15, 15, 32)        0        
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 15, 15, 64)        18496    
_________________________________________________________________
activation_3 (Activation)    (None, 15, 15, 64)        0        
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 13, 13, 64)        36928    
_________________________________________________________________
activation_4 (Activation)    (None, 13, 13, 64)        0        
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 6, 6, 64)          0        
_________________________________________________________________
dropout_2 (Dropout)          (None, 6, 6, 64)          0        
_________________________________________________________________
flatten_1 (Flatten)          (None, 2304)              0        
_________________________________________________________________
dense_1 (Dense)              (None, 512)               1180160  
_________________________________________________________________
activation_5 (Activation)    (None, 512)               0        
_________________________________________________________________
dropout_3 (Dropout)          (None, 512)               0        
_________________________________________________________________
dense_2 (Dense)              (None, 10)                5130     
_________________________________________________________________
activation_6 (Activation)    (None, 10)                0        
=================================================================
Total params: 1,250,858
Trainable params: 1,250,858
Non-trainable params: 0
_________________________________________________________________
(2065, 635, 4)
Using real-time data augmentation.
WARNING:tensorflow:Variable *= will be deprecated. Use variable.assign_mul if you want assignment to the variable value or 'x = x * y' if you want a new python Tensor object.
Epoch 1/3
138/1563 [=>........

大图:


 

3、尝试对例子的参数进行分析,得出初步修改意见。
从这个序贯模型的建立过程中,其模型大概是这样的:
第一段是
model.add(Conv2D(32, (3, 3), padding='same',input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
基本上相当于卷积->激活->卷积->激活->maxPooling->dropout
然后
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
几乎是原样的来了一遍,唯一不同的是变成了64个一组。
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
最后,到输出阶段了,应该是要准备输出了。
在这个地方,应该触及DL这门技术的核心了,就是我应该构造增益的网络?又怎样根据生成的结果来调整网络。迁移我在图像处理方面的知识,我首先是知道了基础的工具,然后有了很多实际的经验,这样才能够在拿到问题的第一时间,有初步的设想。
更简单的网络代表可以更快 地训练,在我的研究过程中,需要寻找的并不是我们的网络能够复杂到什么程度—而是怎样简单的网络就可以完成目标,达到既定的acc。首先可能是90%到95%,逐渐地去接触更多东西。在cifar-10上要起码达到这个结果。

当然我知道增加epoch,一般时候能够提高准确率,当然也会过拟合;另一个方向,如果我缩小数据,比如在上面的例子中,不添加64位层,结果是这样:
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',
                 input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))

model2 = Sequential()
model2.add(Conv2D(32, (3, 3), padding='same',
                 input_shape=x_train.shape[1:]))
model2.add(Activation('relu'))
model2.add(Conv2D(32, (3, 3)))
model2.add(Activation('relu'))
model2.add(MaxPooling2D(pool_size=(2, 2)))
model2.add(Dropout(0.25))

model2.add(Flatten())
model2.add(Dense(512))
model2.add(Activation('relu'))
model2.add(Dropout(0.5))
model2.add(Dense(num_classes))
model2.add(Activation('softmax'))


Test loss: 0.8056231224060059
Test accuracy: 0.7182
10000/10000 [==============================] - 2s 161us/step
Test loss2: 0.9484411451339722
Test accuracy2: 0.6764


最后,在《NN&DL》中反复被提及的一点,我也实际体会到了:训练需要时间,你可以先去做其它的事情。
到此,我认为《基础_cifar10_序贯》可以结束。




基础_cifar10_序贯的更多相关文章

  1. R语言︱关联规则+时间因素=序贯关联规则

    序贯模型=关联规则+时间因素. 了解这个模型可以参考李明老师的<R语言与网站分析 [李明著][机械工业出版社][2014.04][446页]>,第九章,第二节的"序列模型关联分析 ...

  2. Keras官方中文文档:序贯模型

    快速开始序贯(Sequential)模型 序贯模型是多个网络层的线性堆叠,也就是"一条路走到黑". 可以通过向Sequential模型传递一个layer的list来构造该模型: f ...

  3. Python机器学习笔记:深入理解Keras中序贯模型和函数模型

     先从sklearn说起吧,如果学习了sklearn的话,那么学习Keras相对来说比较容易.为什么这样说呢? 我们首先比较一下sklearn的机器学习大致使用流程和Keras的大致使用流程: skl ...

  4. Keras之序贯(Sequential)模型

    序贯模型(Sequential) 序贯模型是多个网络层的线性堆叠. 可以通过向Sequential模型传递一个layer的list来构造该模型: from Keras.models import Se ...

  5. web开发基础--字节序

    字节是网络传输上的最小单位,是web开发中需要了解的一个知识点. 1.有效位 在谈字节序前需要先了解有效位,有效位分为两种:最低有效位(LSB: Least Significant Bit) 和最高有 ...

  6. socket编程基础-字节序/IP/PORT转换/域名

    socket编程基础 网络IP操作函数 字符串的IP和32位的IP转换 #include <sys/socket.h> #inlcude <netinet/in.h> #inc ...

  7. linux 基础12-程序与资源管理

    1. 基础概念 可执行的二进制文件就是程序 执行程序的时候因触发事件而获取的ID,称为PID 在登入并执行bash时,系统依据登录者的UID/GID给登录者一个PID/GPID/SID等 启动程序时, ...

  8. 论山寨手机与Android联姻的技术基础 【序】

    山寨手机的兴起,离不开 MTK(联发科).MTK为手机制造提供了一揽子解决方案,其中既包括硬件,也包括软件.软件方面最重要的,是操作系统.MTK方案的软件的稳定性非常高,一方面是因为其硬件系统变化不大 ...

  9. Keras官方中文文档:序贯模型API

    Sequential模型接口 如果刚开始学习Sequential模型,请首先移步这里阅读文档,本节内容是Sequential的API和参数介绍. 常用Sequential属性 model.layers ...

随机推荐

  1. iOS - (多图上传已封装)

      /***  上传带图片的内容,允许多张图片上传(URL)POST**  @param url                 网络请求地址*  @param images              ...

  2. mybatis之接口绑定

    接口绑定方案 mybatis中,提供了一套接口绑定方案,程序员可以提供一个接口,然后提供对应接口的一个mapper.xml文件.MyBatis会自动将接口和xml文件进行绑定.实际上就是mybatis ...

  3. 解析img图片没找到onerror事件

    本篇文章主要介绍了img图片没找到onerror事件 Stack overflow at line: 0 需要的朋友可以过来参考下,希望对大家有所帮助 打开网页时提示 Stack overflow a ...

  4. JS实例5

    做这么一个效果  鼠标单击某个名字后变色,没选中的鼠标移动上去变色 首先布局这个效果,然后给每个表格添加单击事件onclick.鼠标放上事件onmousemove.鼠标移出事件onmouseout 容 ...

  5. OpenCV resources

    http://blog.csdn.net/small_foxrabbit/article/details/39858149http://blog.csdn.net/wuyoy520/article/d ...

  6. centos下jdk、jre安装

    1.在/usr/目录下创建java目录 [root@localhost ~]# mkdir/usr/java [root@localhost ~]# cd /usr/java 2.下载jdk,然后解压 ...

  7. workerman程序调试

    现象1 启动后报错类似如下: php start.php start PHP Warning: stream_socket_server(): unable to connect to tcp://x ...

  8. git时光机操作

    A状态:代码版本A B状态:代码版本B(比A状态时增加了图片.代码) 这时,git add. git commit -m"" .push之前,意识到忘了让git忽略图片的添加,就: ...

  9. cocos v3.10 下载地址

    官方给出的是在:http://www.cocos2d-x.org/filedown/CocosForWin-v3.10.exe如果下载不了,可以在这里下http://cdn.cocos2d-x.org ...

  10. 【Hbase学习之三】Hbase Java API

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-2.6.5 hbase-0.98.12.1-h ...