tensorflow - conv2d 不起作用
问题描述
我在 tensorflow 中训练 CNN,但程序似乎停留在第一个 tf.nn.conv2d 步骤。我已经从 keras 导入了 cifar 10 数据集并在 floydhub 中运行我的代码。我还没有开始会话,这只是计算图。 链接到完整的笔记本
这是卡住的部分:
# forward propagation
# convolution layer 1
c1 = tf.nn.conv2d(x_train, w1, strides = [1,1,1,1], padding = 'VALID')
# activation function for c1: relu
r1 = tf.nn.relu(c1)
# maxpooling
p1 = tf.nn.max_pool(r1, ksize = [1,2,2,1], strides = [1,2,2,1], padding = 'SAME')
# convolution layer 2
c2 = tf.nn.conv2d(p1, w2, strides = [1,1,1,1], padding='VALID')
# activation function for c2: relu
r2 = tf.nn.relu(c2)
# maxpooling
p2 = tf.nn.max_pool(r2, ksize = [1,2,2,1], strides = [1,2,2,1], padding = 'SAME')
# flattening the previous max pool layer
l1 = tf.contrib.layers.flatten(p2)
# fully connected layer
final = tf.contrib.layers.fully_connected(l1, 10, activation_fn = None)
编辑:-
这就是我导入数据集的方式
# importing 50000 images of size 32x32x3
i = 0
# this list holds the images
img_base = []
for img in glob.glob("train\\*.png"):
img_base.append(cv2.imread(img))
# x_train is a nx32x32x3 matrix of n no. of images
x_train = np.array(img_base[0:40000]).astype(np.float32)
用于训练图像和标签的占位符
# creating placeholders
x = tf.placeholder(tf.float32, [None, 32, 32, 3])
y = tf.placeholder(tf.float32, [None, 10])
权重初始化`
tf.reset_default_graph()
# creating weights
w1 = tf.get_variable('w1', [4,4,3,10], initializer=tf.contrib.layers.xavier_initializer())
w2 = tf.get_variable('w2', [4,4,10,15], initializer=tf.contrib.layers.xavier_initializer())
解决方案
推荐阅读
- python - 有没有办法获得一组元组的组合?
- javascript - 阻止或检测来自自动完成列表内部的关键事件
- perl - 在路径变量名称中保留空格
- java - 为什么会这样编译?我显然使用了错误的类型。Java中的类型安全发生了什么?
- c# - 是否可以将 Windows 窗体应用程序移植到 WPF 将其 Designer.cs 文件转换为 XAML 文件?
- reactjs - React SSR 和 ReactiveSearch
- broadleaf-commerce - 在 Admin 中所做的更改未反映在 api 结果中
- c# - 在 ML.net 中发布训练模型。从 TaxiFareExample 发布更改模型。'Features' 必须是已知大小的 R4 向量,但具有类型:Vec
- arduino - Arduino 打印格式 - 如何在循环中水平打印
- python - .plot(y=) 尽管改变了 y 的值,但给出了相同的图表