本篇文章还是基于tensorflow给的官方样例,教会大家如何构建简单的CNN网络以下是官方代码
conv2d定义的是卷积层
maxpool2d定义的是池化层
conv_net定义的是具体的网络运算过程,其中fc定义的是全连接层
可以很方便地修改各层的参数,如深度,广度等
我用来解决的问题是来识别手写的O和X,MNIST不知道为啥在我的电脑上装不上去。
训练集与测试集是我自己手写出来的,总共120张,因为样本比较小,所以采取的是标准梯度下降法。
以下是我的代码。前面加的num_step和num_test是用来定义训练集和测试集的数量的,这里选取的是100和20。同时我的程序为了方便选择直接读取图片。最后加上了loss_op和acc关于时间的变化。
from __future__ import division, print_function, absolute_import
import numpy as np
import tensorflow as tf
import string
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# Training Parameters
learning_rate = 0.001
num_steps = 100
num_test = 20
display_step = 4
# Network Parameters
num_input = 81 # data input
num_classes = 2 # total classes
dropout = 0.75 # Dropout, probability to keep units
fd=open('inputimage.txt','w')
imga=np.zeros((num_steps,num_input))
try_imga=np.zeros((num_test,num_input))
for k in range(num_steps+num_test):
img=mpimg.imread(str(k+1)+'.png')
img=(img[:,