Первый аргумент, который вы передаете softmax_cross_entropy_with_logits_v2, неверен. Вы должны передать «предыдущие» значения, чтобы применить softmax. Это потому, что softmax_cross_entropy_with_logits_v2 действительно cross_entropy (softmax (x)). Обоснование состоит в том, что производная может быть упрощена.
В модели вы должны сделать следующее:
def classifierModel(inp):
layer1=tf.nn.relu(tf.nn.conv2d(inp, filter=tf.Variable(tf.truncated_normal([5,5,3,16])),
strides=[1,2,2,1], padding='SAME'))
layer1=tf.nn.bias_add(layer1, tf.Variable(tf.truncated_normal([16])))
layer1=tf.nn.relu(tf.nn.max_pool(layer1, ksize=[1,1,1,1], strides=[1,2,2,1], padding='SAME'))
layer2=tf.nn.relu(tf.nn.conv2d(layer1, filter=tf.Variable(tf.truncated_normal([5,5,16,32])),
strides=[1,2,2,1], padding='SAME'))
layer2=tf.nn.bias_add(layer2, tf.Variable(tf.truncated_normal([32])))
layer2=tf.nn.relu(tf.nn.max_pool(layer2, ksize=[1,1,1,1], strides=[1,2,2,1], padding='SAME'))
layer3=tf.nn.relu(tf.nn.conv2d(layer2, filter=tf.Variable(tf.truncated_normal([5,5,32, 64])),
strides=[1,2,2,1], padding='SAME'))
layer3=tf.nn.bias_add(layer3, tf.Variable(tf.truncated_normal([64])))
layer3=tf.nn.relu(tf.nn.max_pool(layer3, ksize=[1,1,1,1], strides=[1,2,2,1], padding='SAME'))
layer3=tf.nn.dropout(layer3, keep_prob=0.7)
print(layer3.shape)
fclayer1=tf.reshape(layer3, [-1, weights['fc1'].get_shape().as_list()[0]])
fclayer1=tf.add(tf.matmul(fclayer1, weights['fc1']), biases['fc1'])
fclayer1= tf.nn.dropout(fclayer1, keep_prob=0.5)
fclayer2=tf.add(tf.matmul(fclayer1, weights['fc2']), biases['fc2'])
fclayer2=tf.nn.dropout(fclayer2, keep_prob=0.5)
fclayer3=tf.add(tf.matmul(fclayer2, weights['fc3']), biases['fc3'])
fclayer3=tf.nn.dropout(fclayer3, keep_prob=0.7)
logits = tf.add(tf.matmul(fclayer3, weights['out']), biases['out'])
outLayer=tf.nn.softmax(logits)
return outLayer, logits
В функции потерь:
model, logits = classifierModel(inp)
cost=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=logits, labels=y))
optimizer=tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
correct_pred=tf.equal(tf.argmax(model, 1), tf.argmax(y, 1))
accuracy=tf.reduce_mean(tf.cast(correct_pred, tf.float32))
Я сделал поиск в Googleplex для HTML, и я нашел Пакет Гибкости HTML, который я не знаю, ли это для этого или нет, я загружаю его прямо сейчас для предоставления попытки.
В зависимости от какого Вы пытаетесь сделать (возможно, можно ли предоставить нам больше подробной информации?) и в зависимости от того, правильно построен ли HTML, Вы могли бы преобразовать это в XmlDocument
:
System.Xml.XmlDocument x = new System.Xml.XmlDocument();
x.LoadXml(html); // as long as html is well-formed, i.e. XHTML
Затем Вы могли управлять им легко, без WebBrowser
экземпляр. Что касается потоков, я не знаю достаточно о реализации XmlDocument
знать ответ на ту часть.
Если документ не находится в надлежащей форме, Вы могли бы использовать NTidy (обертка.NET для Опрятного HTML) для получения его в форме сначала; я должен был сделать эту самую вещь для проекта однажды, и это действительно не было слишком плохо.
JasonBunting уже отправил это, но он действительно работает, чтобы использовать обертку .NET вокруг опрятного HTML и загрузить его в XmlDocument.
Я использовал эту обертку .NET прежде:
http://www.codeproject.com/KB/cs/ZetaHtmlTidy.aspx
И реализованный это несколько как это:
string input = "<p>crappy html<br <img src=foo></div>";
HtmlTidy tidy = new HtmlTidy()
string output = tidy.CleanHtml(input, HtmlTidyOptions.ConvertToXhtml);
XmlDocument doc = new XmlDocument();
doc.LoadXml(output);
Извините, если рассмотрено пересообщение :)