我创建了一个深度卷积神经网络来对图像中的各个像素进行分类.我的训练数据总是相同的大小(32x32x7),但我的测试数据可以是任何大小.
目前,我的模型只适用于相同大小的图像.我已经广泛使用了tensorflow mnist 教程来帮助我构建我的模型.在本教程中,我们仅使用28x28图像.如何更改以下mnist模型以接受任何大小的图像?
x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
x_image = tf.reshape(x, [-1, 28, 28, 1])
Run Code Online (Sandbox Code Playgroud)
为了使事情变得更复杂,我的模型已经转置了需要指定输出形状的卷积.如何调整以下代码行,以便转置卷积将输出与输入大小相同的形状.
DeConnv1 = tf.nn.conv3d_transpose(layer1, filter = w, output_shape = [1,32,32,7,1], strides = [1,2,2,2,1], padding = 'SAME')
Run Code Online (Sandbox Code Playgroud) python deep-learning conv-neural-network tensorflow deconvolution
我正在尝试创建一个可以对图像中的每个像素进行分类的深度CNN.我复制从图像架构下面取自这个文件.在论文中提到使用去卷积使得任何大小的输入都是可能的.这可以在下图中看到.
目前,我已经硬编码我的模型接受大小为32x32x7的图像,但我想接受任何大小的输入.我需要对我的代码进行哪些更改以接受可变大小的输入?
x = tf.placeholder(tf.float32, shape=[None, 32*32*7])
y_ = tf.placeholder(tf.float32, shape=[None, 32*32*7, 3])
...
DeConnv1 = tf.nn.conv3d_transpose(layer1, filter = w, output_shape = [1,32,32,7,1], strides = [1,2,2,2,1], padding = 'SAME')
...
final = tf.reshape(final, [1, 32*32*7])
W_final = weight_variable([32*32*7,32*32*7,3])
b_final = bias_variable([32*32*7,3])
final_conv = tf.tensordot(final, W_final, axes=[[1], [1]]) + b_final
Run Code Online (Sandbox Code Playgroud) python deep-learning conv-neural-network tensorflow deconvolution
我试图从一篇研究论文中复制一个深度卷积神经网络。我已经实现了这个架构,但是在 10 个 epoch 之后,我的交叉熵损失突然增加到无穷大。这可以在下面的图表中看到。您可以忽略问题发生后准确性发生的情况。
这是带有架构图片的github存储库
在做了一些研究之后,我认为使用 AdamOptimizer 或 relu 可能是一个问题。
x = tf.placeholder(tf.float32, shape=[None, 7168])
y_ = tf.placeholder(tf.float32, shape=[None, 7168, 3])
#Many Convolutions and Relus omitted
final = tf.reshape(final, [-1, 7168])
keep_prob = tf.placeholder(tf.float32)
W_final = weight_variable([7168,7168,3])
b_final = bias_variable([7168,3])
final_conv = tf.tensordot(final, W_final, axes=[[1], [1]]) + b_final
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=final_conv))
train_step = tf.train.AdamOptimizer(1e-5).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(final_conv, 2), tf.argmax(y_, 2))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
Run Code Online (Sandbox Code Playgroud)
编辑 如果有人感兴趣,解决方案是我基本上输入了不正确的数据。
python machine-learning deep-learning conv-neural-network tensorflow
我正在创建一个带有tensorflow的深度CNN.我已经创建了这个架构,现在我正处于培训过程中.当我开始训练模型时,我使用命令:
sess.run(tf.global_variables_initializer())
Run Code Online (Sandbox Code Playgroud)
调用此命令时,我收到下面的错误.我的直觉告诉我,张量形状可能太大而无法解析/初始化.我已经研究过这个错误,似乎在网上很少有文档.此错误是否提供足够的信息来说明问题所在?谢谢.
2017-10-25 15:07:54.252194: W C:\tf_jenkins\home\workspace\rel-
win\M\windows\PY\35\tensorflow\core\framework\op_kernel.cc:1182] Invalid
argument: Cannot parse tensor from proto: dtype: DT_FLOAT
tensor_shape {
dim {
size: 16
}
dim {
size: 16
}
dim {
size: 7
}
dim {
size: 3298
}
dim {
size: 3298
}
}
float_val: 0
2017-10-25 15:07:54.252767: E C:\tf_jenkins\home\workspace\rel-
win\M\windows\PY\35\tensorflow\core\common_runtime\executor.cc:644] Executor
failed to create kernel. Invalid argument: Cannot parse tensor from proto:
dtype: DT_FLOAT
tensor_shape {
dim {
size: 16
}
dim {
size: 16
} …Run Code Online (Sandbox Code Playgroud)