一名深度学习新手,训练了一个卷积网络,代码如下图。可是不知道哪里出了问题,我的损失值下降到一定程度后,准确率直接降低了好多,一直上不去。看了好久也没找到问题在哪儿。哪位大神能帮忙看一下啊。
'''
用卷积网络对服饰进行分类
结构:输入--卷积池化层1--卷积池化层2--全连接1--丢弃层--全连接2--输出
'''
import os.path
import numpy as np
import tensorflow as tf
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets
class FashionMnist:
def __init__(self, data_path):
# 下载数据集并创建会话
self.data = read_data_sets(data_path, one_hot=True)
# 初始化权重
def initial_weight(self, shape):
'''
生成权重矩阵
:param shape: 权重矩阵的形状,格式为(n,m)
:return:
'''
initial_value = tf.random_normal(shape=shape)
weight_matrix = tf.Variable(initial_value, shape=shape)
return weight_matrix
# 初始化偏置
def initial_bias(self, shape):
'''
生成偏置矩阵
:param shape:格式为(n,)
:return:
'''
initial_bias = tf.ones(shape=shape)
bias_matrix = tf.Variable(initial_bias, shape=shape)
return bias_matrix
# 卷积
def convolution(self, input, in_channels, out_channels, strides=1):
'''
进行二维卷积
:param input: 输入数据,维度为(N,H,W,C)
:param in_channels: 输入通道数
:param out_channels: 输出通道数
:param strides: 步长,默认为1
:param ReLU_active: 是否需要ReLU激活函数,默认需要
:return: 返回卷积(激活)后的结果
'''
filter = self.initial_weight(shape=[5, 5, in_channels, out_channels])
# tf.nn.conv2d中卷积核fi