【发布时间】:2019-06-22 12:43:55
【问题描述】:
我想实现一个具有以下架构的简单 CNN:
conv1:卷积和修正线性激活 (RELU)
pool1:最大池化
FC2:具有校正线性激活 (RELU) 的全连接层
softmax 层:最终输出预测,即分类为十个之一 类。
我正在关注这个指南:https://towardsdatascience.com/cifar-10-image-classification-in-tensorflow-5b501f7dc77c,但这里的 CNN 非常复杂。有人可以指导我如何缩短此实现或代码吗?我也对 conv2d、权重和偏差的维度感到困惑。
下面是我开始使用的代码!
import pickle
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
dir = 'C:/PythonProjects/cifar-10-batches-py/'
def unpickle(file):
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
def to_onehot(labels, nclasses):
outlabels = np.zeros((len(labels),nclasses))
for i,l in enumerate(labels):
outlabels[i,l]=1
return outlabels
def normalize(x):
"""
argument
- x: input image data in numpy array [32, 32, 3]
return
- normalized x
"""
min_val = np.min(x)
max_val = np.max(x)
x = (x-min_val) / (max_val-min_val)
return x
data_dash = unpickle(dir+'data_batch_1')
data_test = unpickle(dir+'test_batch')
X = data_dash[b'data'] # m * n
X_test = data_test[b'data'] # m * n
train_X = X.reshape(-1, 32, 32, 3)
train_y = np.array(data_dash[b'labels'])
train_y = to_onehot(train_y,10)
test_X = X_test.reshape(-1,32,32,3)
test_y = np.array(data_test[b'labels'])
test_y = to_onehot(test_y,10)
【问题讨论】:
标签: python-3.x tensorflow computer-vision conv-neural-network