对于我的应用程序,我试图将列表转换[None, 1, 1, 64]为张量使用tf.convert_to_tensor([None, 1, 1, 64]),但这给了我错误:
TypeError: Failed to convert object of type <type 'list'> to Tensor. Contents: [None, 1, 1, 64]. Consider casting elements to a supported type.
理想情况下,我想None成为第一个维度,因为它代表了batch_size.目前,我唯一可以避免此错误的方法是明确地将batch_size提供给操作,但我希望有一种更简洁的方法将这样的列表转换为张量.
用于训练的标签和用于验证的标签是否相同?我认为它们应该是相同的;然而,网上提供的标签似乎存在差异。当我从官方网站下载其验证数据的 imagenet 2012 标签时,我得到的标签以kit_fox第一个标签开头,它与我从官方网站下载的 2012 年数据集验证图像完全匹配。这是标签的示例:https://gist.github.com/aaronpolhamus/964a4411c0906315deb9f4a3723aac57
然而,对于几乎所有预训练模型,包括那些由 Google 训练的模型,它们用于训练的 imagenet 标签实际上都是从 开始的tench, tinca tinca。请参阅此处:https ://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a
为什么会出现如此巨大的差异呢?“tincatinca”这种标签从何而来?
如果我们使用与实际验证图像相对应的第一个标签映射,我们将面临另一个问题:2 个类(“Crane”和“maillot”)实际上是重复的,即它们具有相同的名称,但指的是不同类型的起重机 -机械起重机和动物起重机 - 导致 2 个类中产生 100 个图像,而不是假设的 50 个。如果我们不使用第一个映射,那么与第二个标签映射相对应的验证图像的可靠来源在哪里?
classification machine-learning computer-vision deep-learning imagenet
电流tf.contrib.metrics.streaming_accuracy只能计算前1个精度,而不是前k个.作为一种解决方法,这就是我一直在使用的:
tf.reduce_mean(tf.cast(tf.nn.in_top_k(predictions=predictions, targets=labels, k=5), tf.float32))
Run Code Online (Sandbox Code Playgroud)
但是,这并没有给我一种方法来计算每批次平均的流精度,这对于获得稳定的评估准确性非常有用.我目前通过使用其numpy输出手动计算此流式前5精度,但这意味着我将无法在张量板上显示此度量标准.
有没有办法通过创建一个precision_update函数来实现更简单的实现,或者是否有现有的函数已经执行此操作?
谢谢.
下面的代码将如何工作?
k = np.array([[ 0., 0.07142857, 0.14285714],
[ 0.21428571, 0.28571429, 0.35714286],
[ 0.42857143, 0.5, 0.57142857],
[ 0.64285714, 0.71428571, 0.78571429],
[ 0.85714286, 0.92857143, 1. ]])
y = np.array([[0, 3, 1, 2],
[2, 1, 0, 3]])
b = k[y]
Run Code Online (Sandbox Code Playgroud)
形状是:
k 形状: (5, 3)
Y 形状:(2, 4)
b 形状:(2,4,3)
为什么 numpy 矩阵接受另一个矩阵作为其索引以及 k 如何找到正确的输出?为什么会产生一个张量呢?
b 的输出为
[[[ 0. 0.07142857 0.14285714]
[ 0.64285714 0.71428571 0.78571429]
[ 0.21428571 0.28571429 0.35714286]
[ 0.42857143 0.5 0.57142857]]
[[ 0.42857143 0.5 0.57142857]
[ 0.21428571 0.28571429 0.35714286]
[ 0. …Run Code Online (Sandbox Code Playgroud) 在 Tensorflow 中,似乎可以在训练期间、从原始图像(或数据)创建批次时或图像已经静态时进行预处理。鉴于理论上,预处理应该花费大致相等的时间(如果它们使用相同的硬件完成),在训练之前进行数据预处理(甚至数据增强)是否比在实时训练期间有任何实际缺点?
作为一个附带问题,如果在训练期间不进行数据增强,甚至可以在 Tensorflow 中进行吗?
python machine-learning computer-vision deep-learning tensorflow
我在理解递归时遇到了一些困难,因为在某些情况下,我认为这确实很有意义,但在另一些情况下,我很难理解。我知道递归可以帮助将问题分解为更容易解决的子问题,然后可以将这些子问题的解决方案组合起来,以获取我们要解决的主要问题的主要解决方案。例如,我们有找到n的斐波那契和的代码。当然,这不是最快的实现,因为它会导致许多重新计算。
def fib(n):
"""Assumes n is an int >= 0
Returns Fibonacci of n"""
if n == 0 or n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我了解发生了什么情况,因为在解决基本情况之后,返回的值被存储并在后续的else语句中重复使用,也就是说,对于fib(2),fib(1)+ fib(0)将返回2 ),然后将fib(2)的结果用于计算fib(3),其中fib(3)= fib(2)+ fib(1),我们已经有了答案。这对我来说很清楚,因为最后一个基本案例(即递归调用高于基本案例)之后返回的结果被重用,最终目的是获得答案。
但是,在某些情况下,我发现递归并不是那么简单,这让我感到非常困惑。例如,我们有以下代码:
def maxVal(toConsider, avail):
"""Assumes toConsider a list of items, avail a weight
Returns a tuple of the total weight of a solution to the
0/1 knapsack problem and the items of that solution"""
if toConsider == [] or avail == 0: …Run Code Online (Sandbox Code Playgroud) 我似乎无法在我的代码中找到错误,其中有任何字符串被错误地转换为浮点数。但它却给了我这个错误:
W tensorflow/core/framework/op_kernel.cc:958] Unimplemented: Cast string to float is not supported
E tensorflow/core/common_runtime/executor.cc:334] Executor failed to create kernel. Unimplemented: Cast string to float is not supported
[[Node: Adam/apply_grad_op_0/update_FullyConnected_1/b/Cast_2 = Cast[DstT=DT_FLOAT, SrcT=DT_STRING, _class=["loc:@FullyConnected_1/b"], _device="/job:localhost/replica:0/task:0/cpu:0"](Adam/apply_grad_op_0/learning_rate)]]
W tensorflow/core/framework/op_kernel.cc:958] Unimplemented: Cast string to float is not supported
E tensorflow/core/common_runtime/executor.cc:334] Executor failed to create kernel. Unimplemented: Cast string to float is not supported
[[Node: Adam/apply_grad_op_0/update_Conv2D/W/Cast_2 = Cast[DstT=DT_FLOAT, SrcT=DT_STRING, _class=["loc:@Conv2D/W"], _device="/job:localhost/replica:0/task:0/cpu:0"](Adam/apply_grad_op_0/learning_rate)]]
--
Traceback (most recent call last):
File "code.py", line 63, in <module>
snapshot_step = 100, …Run Code Online (Sandbox Code Playgroud) 有没有办法具体验证这一点?我试图解决一个编码问题,但似乎其中一个测试用例(未向我透露)认为这是错误的。在哪些情况下这不成立?