文章目录

  • Flickr30k数据集
    • 数据集构成
    • 数据集下载
  • 代码运行
    • 报错解决方案
  • 可视化
    • TensorBoard可视化
  • 代码语法
    • python中的模块
    • linear函数

Flickr30k数据集

数据集构成

测试集test.json的格式是:一张图片对应5个caption
验证集val.json也是这个格式。

{"image": "flickr30k-images/183647966.jpg","caption": ["A man waring a polo shirt fixes a ticket machine while persons line up at an adjoining machine.","A woman dressed in black with shopping bags is waiting on the sidewalk.","A male worker with his tool box is kneeling next to two women.","A man working on a ticket machine as two women stand near.","A man working on a ticket box."]},

训练集train.json的格式是:一张图片对应1个caption

{"image": "flickr30k-images/1000092795.jpg","caption": "Two young guys with shaggy hair look at their hands while hanging out in the yard.","image_id": 0
},

数据集下载

该链接提供百度云下载网址
链接:https://blog.csdn.net/gaoyueace/article/details/80564642

代码运行

执行手册:https://www.cnblogs.com/xuehuiping/p/16128518.html
参考手册:https://blog.csdn.net/m0_45314033/article/details/106723308

tips:

  • 调代码的目的是跑通,可以将代码层数减少
batch_size_train: 4 #32
batch_size_test: 8 #64
  • 更改dataset.py中的测试图像路径

报错解决方案

  1. 当出现报错信息,告诉你need干嘛时,按照提示说的来;
  2. 当出现一系列报错,一条一条地看,直到看到import来外界的包为止。首先我们假设外界的包没有问题,是我们自己代码的问题。然后print看看我们的接口和引入包的传参问题,先考虑是不是参数类型不对、长度不对、print看看啊等;
  3. 如果本地代码没有问题,再考虑是不是包版本的问题,这个问题靠搜索。

可视化

TensorBoard可视化

执行手册:https://zhuanlan.zhihu.com/p/33178205
代码链接:https://github.com/guoswang/TensorBoard/blob/master/README.md

代码语法

python中的模块

函数的优点之一是,使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。而我们还可以进一步优化代码,将函数存储在被称为 模块(模块是扩展名为 .py 的文件)的独立文件中,再将模块导入到主程序中。import 语句允许在当前运行的程序文件中使用模块中的代码。实际工作中也是如此,这样可以隐藏程序代码的细节,将重心放在程序的高层逻辑上。而且重用性也会提高,也能让其他程序员使用你的函数,只需要将这些文件共享给他就行了。

一、导入整个模块
如果你写了一个 utils.py 的文件里有一些通用的函数,然后你想在 test.py 里面使用这些函数,如何去做呢?如下:

utils.pydef print():print("hello world !")defgreet_user(username):print("hello" + username.title())test.py
import utils#注意使用函数前需要用模块名加 .(点)
utils.print()

这样就可以打印“hello world !”了。

解释:Python在读取test文件时,代码行import utils 打开文件utils.py,并将其中的所有函数都复制到这个程序中,你看不到复制的代码,因为这个程序运行时,Python在幕后已经完成了复制。你只需要知道在test.py中可以使用utils.py 中的所有函数(使用函数时语法是:模块名.函数名)。

二、导入特定的函数
如果你只想使用模块中的某一个函数,可以使用from 模块名 import 函数名,如下:

test.py//导入特定的函数
from utils import importgreet_usergreet_user('joker')

如果使用这种方式,调用函数时则不需要模块名加点来调用函数

三、给模块指定别名

可以给模块指定别名,便于我们去调用函数,如下:

test.pyimportutils as u#注意使用函数前需要用模块名加 .(点)
u.print()

在给模块指定别名之后则可以使用别名去调用函数,这样会使代码更加简洁且不需要去关注模块名,而专注于函数名。

函数命名:给函数命名时,最好是见名知意,且在函数定义后面,可以用注释简要阐述其主要功能

linear函数

原文链接:https://blog.csdn.net/qimo601/article/details/112648317
PyTorch的nn.Linear()是用于设置网络中的全连接层的,需要注意的是全连接层的输入与输出都是二维张量,一般形状为[batch_size, size],不同于卷积层要求输入输出是四维张量。其用法与形参说明如下:

  in_features指的是输入的二维张量的大小,即输入的[batch_size, size]中的size。
  out_features指的是输出的二维张量的大小,即输出的二维张量的形状为[batch_size,output_size],当然,它也代表了该全连接层的神经元个数。
  从输入输出的张量的shape角度来理解,相当于一个输入为[batch_size, in_features]的张量变换成了[batch_size, out_features]的输出张量。
用法示例:

import torch as t
from torch import nn# in_features由输入张量的形状决定,out_features则决定了输出张量的形状
connected_layer = nn.Linear(in_features = 64*64*3, out_features = 1)# 假定输入的图像形状为[64,64,3]
input = t.randn(1,64,64,3)# 将四维张量转换为二维张量之后,才能作为全连接层的输入
input = input.view(1,64*64*3)
print(input.shape)
output = connected_layer(input) # 调用全连接层
print(output.shape)

这段代码运行结果为:

input shape is %s torch.Size([1, 12288])
output shape is %s torch.Size([1, 1])
import torchx = torch.randn(128, 20)  # 输入的维度是(128,20)
m = torch.nn.Linear(20, 30)  # 20,30是指维度
output = m(x)
print('m.weight.shape:\n ', m.weight.shape)
print('m.bias.shape:\n', m.bias.shape)
print('output.shape:\n', output.shape)# ans = torch.mm(input,torch.t(m.weight))+m.bias 等价于下面的
ans = torch.mm(x, m.weight.t()) + m.bias
print('ans.shape:\n', ans.shape)print(torch.equal(ans, output))m.weight.shape:torch.Size([30, 20])
m.bias.shape:torch.Size([30])
output.shape:torch.Size([128, 30])
ans.shape:torch.Size([128, 30])
True

为什么 m.weight.shape = (30,20)?

答:因为公式的线性变换。
先生成一个(30,20)的weight,实际运算中再转置,这样就能和x做矩阵乘法了

flickr 30k的json文件分享:
链接:https://pan.baidu.com/s/1i-swCs9gWIKmyr3Os1vWHw
提取码:whbm

ALBEF图文检索代码运行相关推荐

  1. 神经网络图文检索模型预测代码学习总结(一)

    本文主要总结神经网络图文检索部分语义对齐模型的代码,主要用于记录笔者的学习过程,如有不准确之处,欢迎各路大神指出!谢谢! 1.图像分类神经网络 def predict(model, img):with ...

  2. 【bat批处理脚本命令】bat脚本命令的基本使用(保姆级图文+实现代码)

    目录 1.bat脚本命令的注释 2.bat脚本命令的换行 3.bat脚本命令的if判断 总结 欢迎关注 『bat批处理脚本命令』 系列,持续更新中 欢迎关注 『bat批处理脚本命令』 系列,持续更新中 ...

  3. 利用图文和代码深度解析操作系统OS的内存管理实现原理机制和算法

    利用图文和代码深度解析操作系统OS的内存管理实现原理机制和算法. 内存作为计算机系统的组成部分,跟开发人员的日常开发活动有着密切的联系,我们平时遇到的Segment Fault.OutOfMemory ...

  4. Java 性能优化:教你提高代码运行的效率

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:五月的仓颉 cnblogs.com/xrq730/p/486 ...

  5. iar代码优化影响运行速度吗_Java 性能优化:教你提高代码运行的效率

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:五月的仓颉 cnblogs.com/xrq730/p/486 ...

  6. R语言统计代码运行耗时实战:计算代码运行时间、使用proc.time函数计算代码运行时间

    R语言统计代码运行耗时实战:计算代码运行时间.使用proc.time函数计算代码运行时间 目录

  7. G代码运行模拟软件-NC Viewer

    推荐个G代码运行的模拟软件,下载链接 使用方法 "文件"-"打开"导入G代码 使用空格键可以一条一条语句执行.

  8. python手机版打了代码运行不了-如何用iPad运行Python代码?

    代码在我的Macbook电脑上跑,没有问题.还拿到学生的Windows 7上跑,也没有问题.这才上传到了Github. 在发布的教程文章里,我也已经把安装软件包的说明写得非常详细. 还针对 Anaco ...

  9. python手机版打了代码运行不了-android手机安装python并写代码运行

    整理自已手机通过termux装python编写代码遇到的一些问题及解决方法. 手机安装termux:如图,我手机上的 不要用apt update ,apt upgrade 我之前就是用了这两个命令就装 ...

最新文章

  1. 四、垃圾收集之垃圾收集算法
  2. php使用imagemagick,PHP的ImageMagick使用;
  3. java求值不用后缀表达式_数据结构之后缀表达式求值(java实现)
  4. Makefile:Makefile中的调试打印方法
  5. Soul持续发力社交渠道赴港上市,“Soul式社交”凭什么火出圈?
  6. Hello Qt(十六)——QT绘图实例-钟表
  7. python创建person类_python类的创建
  8. 3 JWT 和 JWS
  9. js 匹配正确手机号
  10. 【无标题】问题记录—— (掌阅)
  11. html写文章发布,写文章.html
  12. fluent并行 linux_Ansys 14中Fluent并行计算MPI全程详解
  13. 发布/上传Jar包到Maven中央仓库 - 史上最详细
  14. SSD-Tensorflow 512x512 训练配置
  15. 复杂网络学习笔记:networkx实现网络的基本拓扑性质
  16. 2021年11月软考网络规划设计师上午真题及答案解析
  17. deepin efi 启动u盘_【2017.12.16】启动U盘简单手动制作BIOS+UEFI的syslinux/grub/boomgr/grub2互转...
  18. Swoft学习常用命令
  19. 华为C8812E打开log日志功能
  20. vue服务器渲染/nuxt/vant-ui/mint-ui/typeScript/stylus(简单了解带网址)

热门文章

  1. 豆瓣上对操作系统OSC的书评
  2. 小程序页面中的toast一闪而过的问题
  3. 手写C语言之分支循环语句-语法详细版(06)
  4. CentOS 7.6服务器使用Bitnami创建Wordpress-5.9.3-0网站
  5. 【项目管理】人力资源管理之一:X-Y理论
  6. js实现按权重取随机分布(生成多项分布算法)
  7. C# Winform GDI+ 绘图
  8. NR HARQ (四)dynamic codebook
  9. 程序员入门消遣看看(二)
  10. posix_spawn函数