我仍然是新手,tensorflow我正在努力了解在我的模特训练继续进行时细节上发生了什么.简单地说,我使用的是slim预训练的模型ImageNet做finetuning我的数据集.以下是从张量板中提取的2个独立模型的一些图:
Model_1 (InceptionResnet_V2)
Run Code Online (Sandbox Code Playgroud)
Model_2 (InceptionV4)
Run Code Online (Sandbox Code Playgroud)
到目前为止,两种模型在验证集上的结果都很差(平均Az(ROC曲线下的面积)= 0.7,而Model_10.79为Model_2).我对这些图的解释是,重量不会随着小批量而变化.它只是改变迷你批次的偏见,这可能是问题所在.但我不知道在哪里验证这一点.这是我能想到的唯一解释,但考虑到我还是新手,这可能是错误的.你能和我分享一下你的想法吗?如有需要,请不要犹豫,要求更多地块.
编辑: 正如您在下面的图表中看到的那样,权重似乎随着时间的推移几乎没有变化.这适用于两个网络的所有其他权重.这让我认为某处存在问题,但不知道如何解释它.
InceptionV4 weights
Run Code Online (Sandbox Code Playgroud)
InceptionResnetV2 weights
Run Code Online (Sandbox Code Playgroud)
EDIT2: 这些模型首先在ImageNet上训练,这些图是在我的数据集上微调它们的结果.我正在使用19个类的数据集,其中包含大约800000个图像.我正在做一个多标签分类问题,我正在使用sigmoid_crossentropy作为丢失函数.这些课程非常不平衡.在下表中,我们显示了2个子集中每个类的存在百分比(训练,验证):
Objects train validation
obj_1 3.9832 % 0.0000 %
obj_2 70.6678 % 33.3253 %
obj_3 89.9084 % 98.5371 %
obj_4 85.6781 % 81.4631 %
obj_5 92.7638 % 71.4327 %
obj_6 99.9690 % 100.0000 %
obj_7 90.5899 % 96.1605 %
obj_8 77.1223 % 91.8368 %
obj_9 94.6200 % 98.8323 %
obj_10 88.2051 % 95.0989 % …Run Code Online (Sandbox Code Playgroud) 我正在使用 Tensorflow 对象检测 API 并研究 pretrainedd ssd-mobilenet 模型。有没有办法为每个 bbox 提取移动网络的最后一个全局池作为特征向量?我找不到保存此信息的操作的名称。
我已经能够根据 github 上的示例提取检测标签和 bbox:
image_tensor = detection_graph.get_tensor_by_name( 'image_tensor:0' )
# Each box represents a part of the image where a particular object was detected.
detection_boxes = detection_graph.get_tensor_by_name( 'detection_boxes:0' )
# Each score represent how level of confidence for each of the objects.
# Score is shown on the result image, together with the class label.
detection_scores = detection_graph.get_tensor_by_name( 'detection_scores:0' )
detection_classes = detection_graph.get_tensor_by_name( 'detection_classes:0' )
num_detections = detection_graph.get_tensor_by_name( 'num_detections:0' ) …Run Code Online (Sandbox Code Playgroud) object-detection tensorflow object-detection-api tensorflow-slim
我使用 tfrecords 存储我的数据,我使用DatasetAPI作为张量读取它们,然后我使用EstimatorAPI 进行训练。现在,我想对数据集中的每个项目进行在线数据增强,但尝试了一段时间后,我找不到办法做到这一点。我想要随机翻转,随机旋转和其他操纵器。
我正在按照本教程中给出的说明使用自定义估计器,这是我的 CNN,但我不确定数据增强步骤发生在哪里。
deep-learning tensorflow tensorflow-slim tensorflow-datasets tensorflow-estimator
我正在尝试在用于图像分类任务的自定义数据集上微调Mobilenet_v2_1.4_224模型。我正在关注本教程TensorFlow-Slim图像分类库。我已经创建了.tfrecord训练和验证文件。当我尝试从现有检查点进行微调时,出现以下错误:
InvalidArgumentError(请参阅上面的回溯):Assign需要两个张量的形状匹配。lhs shape = [1,1,24,144] rhs shape = [1,1,32,192] [[节点:save / Assign_149 =分配[T = DT_FLOAT,_class = [“ loc:@ MobilenetV2 / expanded_conv_2 / expand / weights”] ,use_locking = true,validate_shape = true,_device =“ / job:localhost / replica:0 / task:0 / device:CPU:0”](MobilenetV2 / expanded_conv_2 / expand / weights,保存/恢复V2:149)]]
我使用的微调脚本是:
DATASET_DIR = G:\数据集
TRAIN_DIR = G:\ Dataset \ emotion-models \ mobilenet_v2
CHECKPOINT_PATH = C:\ Users \ lenovo \ Desktop \ mobilenet_v2 \ mobilenet_v2_1.4_224.ckpt
python train_image_classifier.py \
--train_dir=${TRAIN_DIR} \
--dataset_dir=${DATASET_DIR} \ …Run Code Online (Sandbox Code Playgroud)