小编tot*_*to2的帖子

HowTo的基准:阅读数据

我正在使用tensorflow 0.10,我正在对官方HowTo中读取数据的示例进行基准测试.本文介绍了使用相同的MNIST示例将数据移动到tensorflow的不同方法.

我对结果感到惊讶,我想知道是否有人有足够的低层次理解来解释正在发生的事情.

在HowTo中,基本上有3种方法可以读入数据:

  • Feeding:在python中构建迷你批处理并传递它 sess.run(..., feed_dict={x: mini_batch})
  • Reading from files:使用tf操作打开文件并创建小批量.(在python中绕过处理数据.)
  • Preloaded data:将所有数据加载到单个tf变量或常量中,并使用tf函数将其分解为小批量.变量或常量固定到cpu,而不是gpu.

我用来运行基准测试的脚本位于tensorflow中:

我没有修改这些脚本,除了最后两个因为它们崩溃 - 至少版本0.10 - 除非我添加一个额外的sess.run(tf.initialize_local_variables()).

主要问题

在GTX1060上运行100个小批量100个示例的时间:

  • Feeding: ~0.001 s
  • Reading from files: ~0.010 s
  • Preloaded data (constant): ~0.010 s
  • Preloaded data (variable): ~0.010 s

这些结果对我来说非常令人惊讶.我Feeding原本期望它是最慢的,因为它在python中几乎完成所有操作,而其他方法使用较低级别的tensorflow/C++来执行类似的操作.这与我的预期完全相反.有谁知道发生了什么?

次要问题 …

python tensorflow

7
推荐指数
1
解决办法
2175
查看次数

使Swing组件同步

我正在阅读Java Threads 3rd Ed.由奥克斯和黄(O'Reilly 2004).他们在整本书中都有一个Swing打字游戏的例子.他们定义的类主要是自定义子类javax.swing.JComponent.

对我来说似乎完全错误的是,他们JComponent使用各种同步方法使这些线程安全.我的印象是Swing组件不应该是线程安全的,而是应该始终从Swing事件调度线程访问它们.(有趣的是,他们通过Swing EDT修改组件的次数之一,它是a setText,这是很少有不需要从EDT调用的Swing方法之一.)

我想知道一些有很多编写/阅读Swing代码经验的人:程序员是否常常使Swing组件同步而不是总是通过EDT修改它们?它可以忍受吗?

编辑:
我注意到它与这个帖子几乎是同一个问题.然而,它没有说明程序员在野外实际做了什么.我很困惑,O'Reilly的书会如此公然违反Swing线程模型.

编辑:
我发现他们在本书的中间部分简要解释了Swing线程模型.尽管如此,我想回答一下我的问题.我觉得大多数阅读本书的人最终会违反Swing线程模型,因为他们的大多数例子都是如此.

编辑:
如果要查看代码,可以将示例代码下载为zip文件.例如,参见ch03/example1/AnimatedCharacterDisplayCanvas.

编辑:
我刚刚了解到setText在Java7中不会是线程安全的(2011年7月发布).

java swing multithreading

6
推荐指数
1
解决办法
2992
查看次数

选择一个用于屏障动作执行的线程 - Java CyclicBarrier

查看CyclicBarrier的javadocs,我在类文档中发现了以下语句,我并不完全理解.来自javadoc:

如果屏障操作不依赖于各方在执行时被暂停,那么该方中的任何线程都可以在释放时执行该操作.为了促进这一点,每次调用await()都会返回该线程在屏障处的到达索引.然后,您可以选择应执行屏障操作的线程,例如:

if (barrier.await() == 0) {
  // log the completion of this iteration
} 
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何在所有各方调用.await()之后指定一个特定线程来执行屏障操作并提供一个示例吗?

java concurrency

6
推荐指数
1
解决办法
1606
查看次数

如何有效地在java中实现这个scala操作

我用List(1, 2, 3, 4) ::: List(1, 2, 5) distinct这个问题.它回来了List(1, 2, 3, 4, 5).

如何在java中实现相同的功能,并非常有效和优雅地做到这一点???

java sorting scala arraylist

6
推荐指数
1
解决办法
119
查看次数

展平集合映射

我试图展平一个地图,其中键是可遍历的,从某种意义上说:

Map( Set(1, 2, 3) -> 'A', Set(4, 5, 6) -> 'B')
Run Code Online (Sandbox Code Playgroud)

应该扁平化为:

Map(5 -> B, 1 -> A, 6 -> B, 2 -> A, 3 -> A, 4 -> B)
Run Code Online (Sandbox Code Playgroud)

这是我所做的:

def fuse[A, B, T <: Traversable[A]](mapOfTravs: Map[T, B]): Map[A, B] = {
  val pairs = for {
    trav <- mapOfTravs.keys
    key <- trav
  } yield (key, mapOfTravs(trav))
  pairs.toMap
}   
Run Code Online (Sandbox Code Playgroud)

有用。但:

  1. 有没有更简单的方法来做到这一点?

  2. 我对 Scala 类型系统不是很满意,我相信这可以改进。每当我使用我的函数时,我都必须明确指定类型:

    val map2 = Map( Set(1, 2, 3) -> 'A', Set(4, 5, 6) -> 'B') …
    Run Code Online (Sandbox Code Playgroud)

scala

5
推荐指数
1
解决办法
387
查看次数

Kotlin Process Collection并行?

我有一组对象,我需要对它进行一些转换.目前我正在使用:

var myObjects: List<MyObject> = getMyObjects()

myObjects.forEach{ myObj ->
    someMethod(myObj)
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我希望通过someMethod()并行运行来加速它,而不是等待每个对象完成,然后再开始下一个.

在Kotlin有什么办法吗?也许还有doAsyncTask什么?

我知道一年前问这个问题的时候是不可能的,但是现在Kotlin已经像doAsyncTask我一样好奇,如果有任何协同程序可以提供帮助的话

collections parallel-processing kotlin kotlinx.coroutines

3
推荐指数
2
解决办法
3574
查看次数

如何在保留包含空格的复合表达式的同时拆分单词中的句子?

我需要在空格上拆分一个字符串,但我需要忽略一些包含空格的复合关键字.例如,我有一个String如下,

String testCase = "The patient is currently being treated for Diabetes with Thiazide diuretics";
Run Code Online (Sandbox Code Playgroud)

我需要拆分字符串,但需要Thiazide diuretics作为一个整体复合表达式

String[] array = testCase.split(" ");
Run Code Online (Sandbox Code Playgroud)

结果必须如下:

The
patient
is
currently
being
treated
for
Diabetes
with 
Thiazide diuretics
Run Code Online (Sandbox Code Playgroud)

怎么做 ?

java string split

2
推荐指数
1
解决办法
93
查看次数