我是机器学习的新手,我正在使用Keras和TensorFlow后端来训练CNN模型.
有人可以解释之间的差异model.fit(),并model.evaluate()和我理想情况下应该使用哪一个?(我现在正在使用model.fit()).
我知道的效用model.fit()和model.predict().但我无法理解其实用性model.evaluate().Keras文档只是说:
它用于评估模型.
我觉得这是一个非常含糊的定义.
提前致谢.:)
我有一个依赖于多个 docker 容器的应用程序。我使用 docker compose 以便它们都在同一个网络中进行容器间通信。但是,我的两个容器正在各自的容器内侦听相同的端口 8080,但是映射到主机上的不同端口:8072,8073。对于容器间通信,因为我们使用容器的端口,这会导致问题吗?
约束:
我是 docker 新手,我不知道如何解决这个问题。
谢谢
当我使用model.predict_generator()我时,test_set (images)我得到了不同的预测,当我使用mode.predict()相同的时候,test_Set我得到了一组不同的预测.
为了使用model.predict_generator我按照以下步骤创建了一个生成器:
Imagedatagenerator(此处没有参数)并使用了flow_from_directory shuffle = False.images(normalization,zero-centering etc)训练模型时没有增强或预处理
.我正在研究涉及狗和猫的二元分类问题(来自kaggle).在测试集中,我有1000张猫图像.并通过使用model.predict_generator()我能够获得87%,accuracy()即870图像被正确分类.但是在使用model.predict时,我的准确率达到了83%.
这是令人困惑的,因为两者都应该给出相同的结果吗?提前致谢 :)
我实际上正在使用OpenCV和Python开发机器视觉项目.
目标:该项目的目标是高精度地测量元件的尺寸.
主要硬件:
Basler 500万像素摄像头(aca-2500-14gm)
红色背光(100毫米x 100毫米)(我的组件尺寸约为60毫米)
实验
由于我正在考虑非常严格的公差限制,我首先进行了精确研究.我将组件保留在背光源上并拍摄了100张图像而没有移动部件(想象像100帧的视频).我测量了所有100张图像的外径(OD).我的mm /像素比为0.042.我测量了测量的标准偏差,以找出精度,结果是0.03毫米左右,这是不好的.触摸组件和设置因此我期望精度为0.005 mm.但是我已经退了一个数量级了.我正在使用OpenCV的Hough圆来计算组件的OD.
码:
import sys
import pickle
import cv2
import matplotlib.pyplot as plt
import glob
import os
import numpy as np
import pandas as pd
def find_circles(image,dp=1.7,minDist=100,param1=50,param2=50,minRadius=0,maxRadius=0):
""" finds the center of circular objects in image using hough circle transform
Keyword arguments
image -- uint8: numpy ndarray of a single image (no default).
dp -- Inverse ratio of the accumulator resolution to the …Run Code Online (Sandbox Code Playgroud) 我正在使用 numpy 和 opencv 对大量图像在 python3 中进行大量图像处理。我知道 python 有这个 GIL 可以防止两个线程同时运行。在 Google 上的快速搜索告诉我,不要将 Python 中的线程用于 CPU 密集型任务,仅将它们用于 I/O 或将文件保存到磁盘、数据库通信等。我还读到 GIL 在使用 C 扩展时被释放。由于 numpy 和 opencv 都是 C 和 C++ 扩展,我觉得 GIL 可能会发布。我不确定,因为图像处理是 CPU 密集型任务。我的直觉是正确的还是我更擅长使用多处理?
我试图从相机内在、外在矩阵和畸变系数中获得鸟瞰透视变换。
我尝试使用这个问题的答案。
使用的图片是来自opencv官方github repo的示例图片left02.jpg
我校准了相机并找到了内在、外在矩阵和失真系数。
我未扭曲图像并找到了姿势。检查参数是否正确。
我用来找到透视变换矩阵的方程是(参考上面的链接):
Hr = K * R.inv() * K.inv() 其中 R 是旋转矩阵(来自 cv2.Rodrigues()),K 来自 cv2.getoptimalnewcameramatrix()
[ 1 0 | ]
Ht = [ 0 1 | -K*C/Cz ]
[ 0 0 | ]
Run Code Online (Sandbox Code Playgroud)
其中C=-R.inv()*TT 是来自的平移向量cv2.solvePnP()
,Cz 是 C 向量的第三个分量
所需的转换是: H = Ht * Hr
我用来构造上述等式的代码是:
K = newcameramtx # from cv2.getoptimalnewcameramatrix()
ret,rvec,tvec = cv2.solvePnP(world_points,corners2,K,dist)
R,_ = cv2.Rodrigues(rvec)
_,R_inv = cv2.invert(R)
_,K_inv = cv2.invert(K)
Hr = np.matmul(K,np.matmul(R_inv,K_inv))
C = np.matmul(-R_inv,tvec) …Run Code Online (Sandbox Code Playgroud) 我对 keras 函数式 API 中的语法如何工作有点困惑。它对于定义复杂的多输入和输出模型非常有用。但语法对我来说有点令人困惑。
new_layer = Conv2d(...)(old_layer)
Run Code Online (Sandbox Code Playgroud)
据我所知 Conv2d 是一个类。Conv2d()() 语法在python中如何工作?
我正在使用 keras 和tensorflow 训练 CNN 进行图像二元分类(每个图像 15k 个样本)。
这是我的模型:
#input layer : first conv layer
model = Sequential()
model.add(Conv2D(filters=32,
kernel_size=(5,5),
input_shape=(256,256,3),
padding='same',
kernel_regularizer=regularizers.l2(0.0001)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.1))
# second conv layer
model.add(Conv2D(filters=64,
kernel_size=(5,5),
padding='same',
kernel_regularizer=regularizers.l2(0.0001)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))
# third layer
model.add(Conv2D(filters=128,
kernel_size=(5,5),
padding='same',
kernel_regularizer=regularizers.l2(0.0001)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.3))
# fourth layer : FC layer
model.add(Flatten())
model.add(Dense(128,kernel_regularizer=regularizers.l2(0.0001)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.5))
# prediction layer
model.add(Dense(2,activation='softmax',name='prediction',kernel_regularizer=regularizers.l2(0.0001)))
Run Code Online (Sandbox Code Playgroud)
我使用 Adam(设置为 keras 文档中给出的默认值)作为优化器。当我开始训练模型时,它开始表现得很奇怪。
Epoch 14/180
191s - loss: 0.7426 - acc: 0.7976 - val_loss: …Run Code Online (Sandbox Code Playgroud) keras ×4
opencv ×3
python ×3
api ×1
dimension ×1
docker ×1
evaluate ×1
gil ×1
matrix ×1
measurement ×1
model ×1
networking ×1
numpy ×1
optimization ×1
perspective ×1
port ×1
prediction ×1
python-3.x ×1
syntax ×1
tensorflow ×1