- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为自定义数据集创建一个卷积神经网络。分类器只有两个类。我能够正确读取输入图像,并且还为它们分配了两个相应类的batch_labels。代码执行没有错误,但输出异常。由于某种原因,准确率始终为 50%。
image=inputs()
image_batch=tf.train.batch([image],batch_size=150)
label_batch_pos=tf.train.batch([tf.constant([0,1])],batch_size=75) # label_batch for first class
label_batch_neg=tf.train.batch([tf.constant([1,0])],batch_size=75) # label_batch for second class
label_batch=tf.concat(0,[label_batch_pos,label_batch_neg])
W_conv1 = weight_variable([5, 5, 3, 32])
b_conv1 = bias_variable([32])
image_4d = tf.reshape(image, [-1,32,32,3])
h_conv1 = tf.nn.relu(conv2d(image_4d, W_conv1) + b_conv1)
h_pool1 = max_pool_2x2(h_conv1)
W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
h_pool2 = max_pool_2x2(h_conv2)
W_fc1 = weight_variable([8 * 8 * 64, 1024])
b_fc1 = bias_variable([1024])
h_pool2_flat = tf.reshape(h_pool2, [-1, 8*8*64])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)
h_fc1_drop = tf.nn.dropout(h_fc1, 0.5)
W_fc2 = weight_variable([1024, 2])
b_fc2 = bias_variable([2])
y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
cross_entropy = -tf.reduce_sum(tf.cast(label_batch,tf.float32)*tf.log(y_conv+1e-9))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
tf.train.start_queue_runners(sess=sess)
correct_prediction=tf.equal(tf.argmax(y_conv,1), tf.argmax(label_batch,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
for i in range(100):
train_step.run(session=sess)
print(sess.run(accuracy))
print(sess.run(correct_prediction))
当我打印 Correct_prediction
张量时,无论如何我都会得到以下输出。
[ True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False]
准确度始终为 0.5,就好像权重根本没有更新一样。当我在每个训练步骤后打印权重时,它们保持不变。我想我有一些编码错误。网络是否会一次又一次地对同一张图像进行训练?但即便如此,权重也必须更新。我有 150 个训练样本,每个类 75 个。有人可以指出我正确的方向吗?
编辑:这就是我初始化权重的方式
def weight_variable(shape,name):
initial = tf.truncated_normal(shape, stddev=0.5)
return tf.Variable(initial,name=name)
def bias_variable(shape,name):
initial = tf.constant(1.0, shape=shape)
return tf.Variable(initial,name=name)
最佳答案
您的网络存在一些设计缺陷。由于数学问题,自己计算交叉熵并在输出层上应用 softmax 并不是一个好主意。如果您对数学感兴趣,如果不坚持 Tensorflow 解释和方法,我可以添加此内容:tf.nn.softmax_cross_entropy_with_logits .
您是否已经尝试过多种不同的配置?根据图像的复杂性,更高或更低的内核大小和特征图数量可能是个好主意。一般来说,如果你的图像相对同质,就会添加很多相当相似的信息,因此如果你有很多特征图,网络就很难收敛。由于你只有两个输出神经元,我认为图像不是很复杂?
接下来就是你的退学。您始终使用 0.5 的 dropout,但通常,对于测试/验证(如您的准确性预测),您不使用 dropout。在大多数情况下,您仅将其用于训练。您可以创建一个占位符来指定您的退出率并提供此 sess.run
。
这是我自己的一些例子:
h_fc_drop = tf.nn.dropout(h_fc, keep_prob)
(...)
accu, top1, top3, top5 = sess.run([accuracy, te_top1, te_top3, te_top5],
feed_dict={
x: teX[i: i + batch_size],
y: teY[i: i + batch_size]
keep_prob: 1.0
}
)
这可以让 Tensorflow 计算我的准确度
和topX
错误率方程,同时我输入测试数据输入teX
和真实标签teY
表示输出,dropout 的保持概率 keep_prob
为 1.0。
尽管如此,权重的初始化在深度神经网络中非常重要。即使你的设计足以解决你的问题(这也必须进行调查),如果你的权重没有正确初始化,你的网络可能会拒绝学习、发散或收敛到 0。您没有向初始化添加详细信息,因此您可能需要查找Xavier 初始化。 This是 Xavier 初始化的一个简单开始。
最后,我可以鼓励您绘制一些权重、特征图、随时间变化的输出等,以了解您的网络正在做什么。通常这会有很大帮助。
关于python - Tensorflow - 具有自定义数据集的卷积神经网络无法学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691099/
好的,所以我编辑了以下... 只需将以下内容放入我的 custom.css #rt-utility .rt-block {CODE HERE} 但是当我尝试改变... 与 #rt-sideslid
在表格 View 中,我有一个自定义单元格(在界面生成器中高度为 500)。在该单元格中,我有一个 Collection View ,我按 (10,10,10,10) 固定到边缘。但是在 tablev
对于我的无能,我很抱歉,但总的来说,我对 Cocoa、Swift 和面向对象编程还很陌生。我的主要来源是《Cocoa Programming for OS X》(第 5 版),以及 Apple 的充满
我正在使用 meta-tegra 为我的 NVIDIA Jetson Nano 构建自定义图像。我需要 PyTorch,但没有它的配方。我在设备上构建了 PyTorch,并将其打包到设备上的轮子中。现
在 jquery 中使用 $.POST 和 $.GET 时,有没有办法将自定义变量添加到 URL 并发送它们?我尝试了以下方法: $.ajax({type:"POST", url:"file.php?
Traefik 已经默认实现了很多中间件,可以满足大部分我们日常的需求,但是在实际工作中,用户仍然还是有自定义中间件的需求,为解决这个问题,官方推出了一个 Traefik Pilot[1] 的功
我想让我的 CustomTextInputLayout 将 Widget.MaterialComponents.TextInputLayout.OutlinedBox 作为默认样式,无需在 XML 中
我在 ~/.emacs 中有以下自定义函数: (defun xi-rgrep (term) (grep-compute-defaults) (interactive "sSearch Te
我有下表: 考虑到每个月的权重,我的目标是在 5 个月内分散 10,000 个单位。与 10,000 相邻的行是我最好的尝试(我在这上面花了几个小时)。黄色是我所追求的。 我试图用来计算的逻辑如下:计
我的表单中有一个字段,它是文件类型。当用户点击保存图标时,我想自然地将文件上传到服务器并将文件名保存在数据库中。我尝试通过回显文件名来测试它,但它似乎不起作用。另外,如何将文件名添加到数据库中?是在模
我有一个 python 脚本来发送电子邮件,它工作得很好,但问题是当我检查我的电子邮件收件箱时。 我希望该用户名是自定义用户名,而不是整个电子邮件地址。 最佳答案 发件人地址应该使用的格式是: You
我想减小 ggcorrplot 中标记的大小,并减少文本和绘图之间的空间。 library(ggcorrplot) data(mtcars) corr <- round(cor(mtcars), 1)
GTK+ noob 问题在这里: 是否可以自定义 GtkFileChooserButton 或 GtkFileChooserDialog 以删除“位置”部分(左侧)和顶部的“位置”输入框? 我实际上要
我正在尝试在主页上使用 ajax 在 magento 中使用 ajax 显示流行的产品列表,我可以为 5 或“N”个产品执行此操作,但我想要的是将分页工具栏与结果集一起添加. 这是我添加的以显示流行产
我正在尝试使用 PasswordResetForm 内置函数。 由于我想要自定义表单字段,因此我编写了自己的表单: class FpasswordForm(PasswordResetForm):
据我了解,新的 Angular 7 提供了拖放功能。我搜索了有关 DnD 的 Tree 组件,但没有找到与树相关的内容。 我在 Stackblitz 上找到的一个工作示例.对比drag'ndrop功能
我必须开发一个自定义选项卡控件并决定使用 WPF/XAML 创建它,因为我无论如何都打算学习它。完成后应该是这样的: 到目前为止,我取得了很好的进展,但还有两个问题: 只有第一个/最后一个标签项应该有
我要定制xtable用于导出到 LaTeX。我知道有些问题是关于 xtable在这里,但我找不到我要找的具体东西。 以下是我的表的外观示例: my.table <- data.frame(Specif
用ejs在这里显示日期 它给我结果 Tue Feb 02 2016 16:02:24 GMT+0530 (IST) 但是我需要表现为 19th January, 2016 如何在ejs中执行此操作?
我想问在 JavaFX 中使用自定义对象制作 ListView 的最佳方法,我想要一个每个项目如下所示的列表: 我搜了一下,发现大部分人都是用细胞工厂的方法来做的。有没有其他办法?例如使用客户 fxm
我是一名优秀的程序员,十分优秀!