我无法访问 tf。插入语句时的数据集,包括"来自转换器",例如"from transformers import glue_processors"



当从Win10的命令提示符(python run_tf_glue_Test.py(运行以下代码(run_tf.glue_Test.my(时,代码在工作几分钟后停止,没有错误。之前的信息控制台中显示了"for line in datasets:"语句,因此我假设生成了tf.Dataset。

这段代码被修改并删除了原始run_tf_glue.py(位于'git-clone下载的trnsformers/emaples/text-classification/中https://github.com/huggingface/transformers'然后由pip安装(,以简化并澄清此问题的原因。对原始代码进行了修改,在转换为字典格式的tf.Dataset后,将文本文件馈送到glue_convert_examples_to_features函数中。

此问题发生在生成tf.Datase的模块中,但相同的代码在协作中运行良好。

我怀念当地的环境吗?

python环境:3.7.6

# coding=utf-8
""" Fine-tuning the library models for sequence classification."""

import logging,sys
import os
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, Optional
import numpy as np,csv
import tensorflow as tf
import tensorflow_datasets as tfds
from transformers import glue_processors

def gen_dataset(subf):
print('** in**')
#tf.enable_eager_execution()
logging.info('version(%s)',tf.__version__)
categories = ['0', '1'] 
category_to_id = {
category: index for index, category in enumerate(categories)
}
origin='c:/tools/python37/transformers/'+subf+'.tsv'
origin=origin.replace('validation','dev')
logging.info('*** origin(%s)',origin)
with open(origin,'r',encoding='utf-8') as fin:
reader = csv.reader(fin,delimiter='t')

rows = [{
'idx': index,
'sentence': row[0],
'label': category_to_id[row[1]],
} for index, row in enumerate(reader) if row[1] in categories]
datasets = tf.data.Dataset.from_generator(
lambda: rows,{'idx': tf.int64, 'sentence': tf.string, 'label': tf.int64}
)
logging.info('** records(%d) type(%s)**',len(rows),type(datasets))
for line in datasets:
logging.info('*** line(%s)',line)
print('** lines:',line)
sys.exit(7)
return(datasets,len(rows))
logger = logging.getLogger(__name__)
def main():
logging.basicConfig(
format="%(asctime)s - %(levelname)s - %(name)s -   %(message)s",
datefmt="%m/%d/%Y %H:%M:%S",
level=logging.INFO,
)
gen_dataset('data/train')
if __name__ == "__main__":
main()

原因是GPU使用导致的,因此插入'os.environg["CUDA_VISIBLE_DEVICES"]="-1〃’在'import-os'语句指定只使用cpu之后,问题就消失了。

抱歉耽误了你的时间。

最新更新