我在tensorflow中使用对象检测api.我注意到几乎所有参数都通过配置文件.我找不到关于这些配置文件的选项的任何文档或教程.
我知道在官方的git中,他们为他们的预训练模型提供了一个配置文件列表,这可能非常有用,但它并不涵盖所有情况,当然如果需要也不提供任何解释.
例如,在train_config一节中有一些数据扩充选项是非常自我解释但其他选项的潜在存在不清楚:
data_augmentation_options {
random_horizontal_flip {
}
}
data_augmentation_options {
ssd_random_crop {
}
}
Run Code Online (Sandbox Code Playgroud)
有没有我可以参考的来源?例如,在本教程中,出现了两个我不知道的额外选项(batch_queue_capacity和prefetch_queue_capacity).我在哪里可以找到一个合适的选项列表?我知道它是特定于模型的,但其中一些是通用的,非常有用.
我刚开始使用Keras并构建了一个Q-learning示例程序.我创建了一个tensorboard回调,并将其包含在对model.fit的调用中,但TensorBoard中出现的唯一内容是丢失的标量摘要和网络图.有趣的是,如果我打开图中的密集层,我会看到一个标有"bias_0"的小摘要图标和一个标记为"kernel_0"的摘要图标,但我没有看到这些出现在TensorBoard的分布或直方图标签中,就像我在我用纯张量流建立了一个模型.
我是否需要在Tensorboard中执行其他操作才能启用它们?我是否需要查看Keras生成的模型的详细信息并添加我自己的tensor_summary()调用?
I am using Java for a while and come up with this problem: I use hard-coded paths in windows like
"D:\Java-code\JavaProjects\workspace\eypros\src"
Run Code Online (Sandbox Code Playgroud)
The problem is that I need to escape the backslash character in order to use it with string. So I manually escape each backslash:
"D:\\Java-code\\JavaProjects\\workspace\\eypros\\src"
Run Code Online (Sandbox Code Playgroud)
Is there a way to automatically take the unescaped path and return an escaped java string.
I am thinking that maybe another container besides java string could do the trick (but I don't know …
关于变量范围,我有一个相当简单的问题.
我熟悉增强的For-Loops,但我不明白为什么我应该声明一个新变量来保存每个元素.一个例子可能澄清我的问题:
int[] ar = {1, 2, 3};
int i = 0;
for(i : ar) { // this causes an error if I do not declare a new variable: int i
// for(int i : ar) // this works fine
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
那么我为什么要声明这个新变量呢?毕竟i可以在for循环中访问.我不想使用任何以前的值i,只是不想声明一个新的变量.(我猜测其他可迭代项目使用相同的变量可能会更快).
我想这就是增强For For-Loop的构建方式,但这不会打破整个范围的想法吗?
上述行为引发了一个问题.编译器是否对整个循环使用相同的变量for并只更新其值,或者为每次迭代创建一个新变量?
一个有趣的部分是,如果我保持int i的声明(for循环之前和之内)我甚至得到编译器错误
重复的局部变量i
这使得(至少对我来说)事情有点奇怪.所以我不能i在for循环中使用先前声明的变量,但我也不能在其中声明一个具有相同名称的新变量.
我正在尝试找到一种方法来使用Pillow获取图像的通道数。这看似微不足道,但我找不到(简单答案)。
我知道我可以以较小的开销来解决它(有2种可能性):
array.shapeimage.size[0]*image.size[1]反对len(image.getdata())因此,我对寻找可行的解决方案并不是很感兴趣,而是希望使用枕头来完成此工作。
我使用的代码很简单:
from PIL import Image
image = Image.open(image_path)
image.size # <- this gives the size of the image but not the channel as in numpy.
Run Code Online (Sandbox Code Playgroud)
(609,439)
我还发现此方法受此答案的启发(当然,这也导入了开销):
num_channel = len(image.split())
Run Code Online (Sandbox Code Playgroud)
在我看来,我真的找不到这个简单的答案。
我已经阅读了论文 MobileNetV2(arXiv:1801.04381)
我注意到 SSD Lite MobileNetV2 的推理时间比 SSD MobileNetV2 快。
在 MobileNetV2 论文中,下面这句话中只有对 SSD Lite 的简短说明:
“我们用 SSD 预测层中的可分离卷积(深度方向后跟 1 × 1 投影)替换所有常规卷积”。
所以我的问题是,SSD 和 SSD Lite 有什么区别?
我不明白其中的区别,因为当 MobileNetV1(arXiv:1704.04861v1) 发布并应用于 SSD 时,它已经将所有卷积层替换为上面提到的深度可分离卷积。
我sklearn.cluster.MiniBatchKMeans对使用庞大数据集的一种方式感兴趣。反正我是有点困惑之间的差异MiniBatchKMeans.partial_fit()和MiniBatchKMeans.fit()。
有关文档fit()说明:
通过将 X 分块为小批量来计算 X 上的质心。
而有关文档partial_fit()说明:
更新 k 意味着对单个小批量 X 的估计。
因此,据我所知,它将fit()数据集拆分为训练 k 均值的数据块(我猜参数batch_size是MiniBatchKMeans()指这个),同时partial_fit()使用传递给它的所有数据来更新中心。术语“更新”可能看起来有点模棱两可,表明fit()是否应该执行初始训练(使用),但从文档中的示例来看,这不是必需的(我也可以partial_fit()在开始时使用)。
partial_fit()无论大小如何,都将使用传递给它的所有数据,或者数据大小是否绑定到batch_size作为参数传递给MiniBatchKMeans构造函数的参数,这是真的吗?此外,如果batch_size设置为大于实际数据大小,结果与标准 k-means 算法相同(我猜在后一种情况下效率可能会有所不同,但由于架构不同)。
我正在编写教程https://www.pyimagesearch.com/2019/03/11/liveness-detection-with-opencv/。本教程完美运行,我想使用 .pb 和 .pbtxt 文件将 keras 模型转换为 tensorflow 模型。我搜索了许多教程如何在 Python 中将 keras 模型转换为 .pb 和 pb.txt。我创建了一个函数“freeze_session”,它可以在这些文件中进行转换。无论如何,当我尝试使用 OpenCV 导入这些文件时,它会触发几个错误。
我第一次导入文件 pb 和 pbtxt 时收到此错误:
错误:(-215:断言失败)const_layers.insert(std::make_pair(name, li)).second in function 'cv::dnn::dnn4_v20190122::`anonymous-namespace'::addConstNodes'
我在论坛上创建过,他们说我们必须在导出图形之前使用此行代码将学习阶段设置为使用值 0 进行测试:
K.set_learning_phase(0)
在此之后,我成功地仅使用 pb 文件导入了 TensorFlow:
cvNet = cv.dnn.readNetFromTensorflow('./model/tf_model.pb')
在这些之后,当我想使用以下命令测试 TensorFlow 神经网络时,会触发一个新错误:
blob2 = cv2.dnn.blobFromImage(cv2.resize(face, (32, 32)), 1.0)
cvNet.setInput(blob2)
detections2 = cvNet.forward()
Run Code Online (Sandbox Code Playgroud)
错误:
detections2 = cvNet.forward() cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\dnn\src\dnn.cpp:524: error: (-2:Unspecified error) 可以'不在函数'cv::dnn::dnn4_v20190122::LayerData::getLayerInstance'中创建“Shape”类型的层“flatten_1/Shape”
我在几个论坛上看到我们必须删除节点和优化图,但它对我不起作用:
https://answers.opencv.org/question/183507/opencv-dnn-import-error-for-keras-pretrained-vgg16-model/
事实上,我无法使用两个文件导入模型,导入仅适用于 pb 文件,但不适用于检测。
我如何轻松地进行这种转换?为什么有时用户只用 pb 文件导入,有时用 pb 和 pbtxt 导入?
import tensorflow as …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 tf.keras 中的 EfficientNet 模型,但由于某种原因,这似乎不起作用。
import tensorflow.keras.applications as apps
help(apps)
Run Code Online (Sandbox Code Playgroud)
未列为EfficientNetB0型号。相似地,
import tensorflow.keras.applications.EfficientNetB0
Run Code Online (Sandbox Code Playgroud)
印刷
ModuleNotFoundError:没有名为“tensorflow.keras.applications.EfficientNetB0”的模块
我当前的 Keras.applications 是 1.0.8,这似乎是最新版本。我的 Keras 版本是 2.2.5,tensorflow 版本是 1.15。此外,对于独立的 keras 版本,同样的行为也很明显。
难道这不应该仅通过 keras.application 版本来解决吗?这是否与tensorflow版本有关(意味着也许只有tf 2可以使用它们?)。最后,我可以使用解决这个问题的方法吗?
我正在检查 tf.keras 代码,发现在自定义 model.Model 实例内部时,tf分配给self变量的每个操作列表都会自动转换为ListWrapper对象。此功能的示例如代码所示:
from tensorflow.keras import models
from tensorflow.keras import layers
from tensorflow.keras import initializers
class CustomModel(models.Model):
def __init__(self, width, depth, **kwargs):
super(CustomModel, self).__init__(**kwargs)
self.width = width
options = {
'kernel_size': 3,
'strides': 1,
'padding': 'same',
'kernel_initializer': initializers.RandomNormal(mean=0.0, stddev=0.01, seed=None)
}
self.convs = [layers.Conv2D(filters=width, bias_initializer='zeros', name='convs_{}'.format(i), **options)
for i in range(depth)]
self.conv = layers.Conv2D(filters=width, bias_initializer='zeros', name='conv_{}'.format(0), **options)
self.conv2 = [layers.Conv2D(filters=width, bias_initializer='zeros', name='conv_{}'.format(0), **options)]
self.depth = depth
Run Code Online (Sandbox Code Playgroud)
如果检查的话(例如在调试器中):
type(self.convs)
Run Code Online (Sandbox Code Playgroud)
tensorflow.python.training.tracking.data_structs.ListWrapper
type(self.conv)
Run Code Online (Sandbox Code Playgroud)
张量流.python.keras.layers.卷积.Conv2D
type(self.conv2) …Run Code Online (Sandbox Code Playgroud) python ×7
tensorflow ×6
keras ×4
java ×2
backslash ×1
config ×1
escaping ×1
foreach ×1
opencv ×1
scikit-learn ×1
scope ×1
string ×1
tensorboard ×1