Python自动化工具:engs146文件名批量生成器

需积分: 5 0 下载量 26 浏览量 更新于2024-12-13 收藏 14KB ZIP 举报
资源摘要信息:"该资源描述了一个名为 'engs146_file_namer' 的Python程序,该程序的主要功能是批量生成文件名。根据标题和描述,可以推断出该程序可能被设计用来为一组特定的文件(共146个)生成命名。程序的名称暗示了它可能是与工程学(Engineering, 简写为 'engs')相关的文件命名工具,用于生成工程学第146次实验或课程相关的文件名。虽然未给出具体的文件名生成规则,但可以推测该程序会根据某种逻辑或顺序来创建文件名。例如,它可能按照数字顺序(从1到146)、日期、项目阶段或其他工程学课程特有的命名约定来生成文件名。" 知识点一:Python编程语言 Python是一种高级编程语言,以其简洁易读的语法和强大的功能库而闻名。它是一种解释型语言,支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。Python广泛应用于数据分析、机器学习、网络开发、自动化脚本编写等领域。 知识点二:文件名生成逻辑 文件名的生成通常遵循一定的逻辑或规则,以确保文件的唯一性和可管理性。在程序 'engs146_file_namer' 中,文件名可能根据以下几种常见规则生成: 1. 数字序列:按照顺序或特定规则(如每次递增或递减)生成数字序列作为文件名的一部分。 2. 日期时间:将文件的创建或修改日期作为文件名的一部分,以便于追踪和排序。 3. 哈希值:使用文件内容的哈希值来生成文件名,以确保每个文件名的唯一性。 4. 自定义规则:根据特定需求,如课程代码、实验编号或项目名称,定制文件名生成规则。 知识点三:命令行工具 尽管具体的实现细节未在标题和描述中提供,但可以推断 'engs146_file_namer' 可能是一个命令行工具,用户可以通过命令行界面与之交互,输入相应的参数来执行文件名生成任务。在Python中,可以通过 'argparse' 或 'sys.argv' 等库来处理命令行参数。 知识点四:批量处理 批量处理通常指的是同时处理多个任务或数据,以节省时间和提高效率。在文件管理中,批量生成文件名是一种常见的需求,尤其在处理大量数据文件时。Python中的循环结构和列表推导式是实现批量处理的强大工具。 知识点五:版本控制 文件名称列表中包含了 "main",这可能表明 'engs146_file_namer' 是一个主程序,可能还伴随着其他的辅助文件或模块。在版本控制系统(如Git)中,"main" 通常指代项目的主分支,是代码库的最新稳定版本。这也可能意味着该程序是开源的,用户可以查看源代码,并可能基于其功能进行修改和扩展。 知识点六:命名约定 在工程学或软件开发中,良好的命名约定对于代码的可读性和维护性至关重要。'engs146' 可能是遵循了特定命名约定的缩写,例如,它可能代表工程学课程的编号或特定项目的名称。这些约定通常有助于团队成员和外部用户理解程序的功能和用途。 综上所述,'engs146_file_namer' 是一个使用Python编写的命令行工具,旨在批量生成符合特定逻辑或规则的146个文件的文件名。该工具可能具有用户友好的交互方式,易于使用和理解的命名约定,并可能采用开源的形式供他人学习和改进。

num_hiddens, num_layers, dropout, batch_size, num_steps = 32, 2, 0.1, 64, 10 lr, num_epochs, device = 0.005, 200, d2l.try_gpu() ffn_num_input, ffn_num_hiddens, num_heads = 32, 64, 4 key_size, query_size, value_size = 32, 32, 32 norm_shape = [32] train_iter, src_vocab, tgt_vocab = d2l.load_data_nmt(batch_size, num_steps) encoder = TransformerEncoder(len(src_vocab), key_size, query_size, value_size, num_hiddens, norm_shape, ffn_num_input, ffn_num_hiddens, num_heads, num_layers, dropout) decoder = TransformerDecoder( len(tgt_vocab), key_size, query_size, value_size, num_hiddens, norm_shape, ffn_num_input, ffn_num_hiddens, num_heads, num_layers, dropout) net = d2l.EncoderDecoder(encoder, decoder) d2l.train_seq2seq(net, train_iter, lr, num_epochs, tgt_vocab, device) loss 0.032, 5679.3 tokens/sec on cuda:0 engs = [’go .’, "i lost .", ’he\’s calm .’, ’i\’m home .’] fras = [’va !’, ’j\’ai perdu .’, ’il est calme .’, ’je suis chez moi .’] for eng, fra in zip(engs, fras): translation, dec_attention_weight_seq = d2l.predict_seq2seq(net, eng, src_vocab, tgt_vocab, num_ steps, device, True) print(f’{eng} => {translation}, ’,f’bleu {d2l.bleu(translation, fra, k=2):.3f}’) go . => va !, bleu 1.000 i lost . => j’ai perdu ., bleu 1.000 he’s calm . => il est calme ., bleu 1.000 i’m home . => je suis chez moi ., bleu 1.000 enc_attention_weights = torch.cat(net.encoder.attention_weights, 0).reshape((num_layers, num_heads, -1, num_steps)) enc_attention_weights.shape torch.Size([2, 4, 10, 10])

2023-07-14 上传