觉悟

        生活有两种状态,一种是混日子,一种是为理想奋斗。

        混日子的人,不知道自己想要什么。不知道自己想要什么,就容易迷茫,容易受别人的意见影响,也会时不时的感觉做什么都提不起精神。混日子的人,不是因为他们没有理想,谁都有理想,他们是不愿意为理想付出。或者是理想太大,没有勇气走出第一步。

        我以前喜欢幻想,也做过计划,但做了就放那了,不会去认真执行,对计划没有起码的敬畏之心。当然就不会想到制定了计划,就一定要执行,否则就不要随便制定计划。对计划有了敬畏之心,才会认真去制定计划,并将计划的每一个目标细化,细化到能执行的事上,细化到哪些是需要坚持天天做的。只有细化了的,才是可执行的,只有可执行的,才是能切实做到的。

        理想是人生的灯塔,是你愿意为之付出一辈子的事,是你这辈子的归宿。没有明确目标的人,自己都不清楚自己要什么,怎么去追求,怎么去努力获得?最终怎么可能得到自己想要的,所以人生是需要一个目标的。对于人生目标的重要性,我引用一个马和驴的故事:

        有一匹马和一头驴是好朋友,有一天马选择陪玄奘去西天取经。17年后,马驮着佛经回到长安,被奉为八部天龙。它到磨房会见老朋友,并谈起这次旅途的经历:浩瀚无边的沙滩,高入云霄的山岭,凌峰的冰雪,热海的波澜……驴惊叹道:“多么丰富的见闻呀!那么艰难遥远的道路,我连想都不敢想”。老马说,“其实,我们跨过的距离大体是相等的,你也一步没停止过。不同的是,我陪同玄奘大师有一个远大的目标,按照始终如一的目标前进,所以我们打开了一个广阔的世界。而你被蒙住了眼睛,一生就围着磨盘打转,所以永远也走不出这个狭隘的天地。”

        人生的目标,直接决定了你将来的结局。回过头来,敬畏之心不仅仅是对人生计划,任何一个计划、一件事情都需要有敬畏之心。

 

C:\Users\15522\PycharmProjects\PythonProject\.venv\Scripts\python.exe C:\Users\15522\PycharmProjects\PythonProject\文本张量tensorboard可视化\1.py 2025-11-03 16:56:29.063876: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-11-03 16:56:34.863479: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. Building prefix dict from the default dictionary ... Loading model from cache C:\Users\15522\AppData\Local\Temp\jieba.cache jieba分词结果: [['时光', '流转', ',', '愿', '你', '与', '珍视', '之', '人', '再度', '重逢'], ['所谓', '觉悟', ',', '就是', '能', '在', '黑暗', '的', '荒野', '中', ',', '开辟', '出', '一条', '应当', '前进', '的', '道路']] mytokenizer.word_index {',': 1, '的': 2, '时光': 3, '流转': 4, '愿': 5, '你': 6, '与': 7, '珍视': 8, '之': 9, '人': 10, '再度': 11, '重逢': 12, '所谓': 13, '觉悟': 14, '就是': 15, '能': 16, '在': 17, '黑暗': 18, '荒野': 19, '中': 20, '开辟': 21, '出': 22, '一条': 23, '应当': 24, '前进': 25, '道路': 26} mytokenizer.index_word {1: ',', 2: '的', 3: '时光', 4: '流转', 5: '愿', 6: '你', 7: '与', 8: '珍视', 9: '之', 10: '人', 11: '再度', 12: '重逢', 13: '所谓', 14: '觉悟', 15: '就是', 16: '能', 17: '在', 18: '黑暗', 19: '荒野', 20: '中', 21: '开辟', 22: '出', 23: '一条', 24: '应当', 25: '前进', 26: '道路'} my_token_list dict_values([',', '的', '时光', '流转', '愿', '你', '与', '珍视', '之', '人', '再度', '重逢', '所谓', '觉悟', '就是', '能', '在', '黑暗', '荒野', '中', '开辟', '出', '一条', '应当', '前进', '道路']) [[3, 4, 1, 5, 6, 7, 8, 9, 10, 11, 12], [13, 14, 1, 15, 16, 17, 18, 2, 19, 20, 1, 21, 22, 23, 24, 25, 2, 26]] Loading model cost 0.494 seconds. Prefix dict has been built successfully. 词嵌入层embed Embedding(26, 8) 词嵌入层的矩阵 tensor([[ 0.2307, 1.5899, -0.5819, -0.9151, 1.0146, -0.1126, -0.6835, 1.9709], [ 2.0407, 0.7600, -1.2509, -0.3563, 0.1356, -0.0021, 0.2522, -1.0539], [ 0.9124, -0.0723, 1.7848, 0.5889, 1.8855, -0.1431, 0.5497, 0.1055], [ -0.1318, -0.8340, 1.2602, -1.1459, 0.5092, 1.7017, 0.4397, -1.0814], [ -0.4125, -0.3676, -1.1163, -2.2388, -0.8329, 1.0278, 0.5321, 0.0081], [ 0.2288, -1.1784, -1.0550, -0.5459, -0.7667, -0.0334, -0.7720, -1.2713], [ 1.3941, -1.3963, 0.4875, -0.1831, -0.8079, -0.6201, 0.3474, 0.0757], [ 0.2530, 1.5645, -1.5902, 0.3084, 0.5192, 0.7282, 0.3455, 0.1198], [ -0.9330, 0.2880, 0.1390, -1.2108, -0.9997, 1.9848, 1.2998, 0.6283], [ -0.6334, 0.4963, -0.1726, 0.8671, -0.9366, -0.9752, -0.1679, -1.2855], [ -0.5111, -1.1550, -1.1553, -0.7965, 0.1624, 0.3075, 0.9903, -1.0316], [ 0.6070, 0.3321, 1.1337, -0.0173, 1.1234, 0.6473, -0.0677, -0.8709], [ 0.0970, 2.0479, 0.0321, -0.5874, -0.5075, -1.5318, 0.7667, 0.6393], [ 0.8273, 1.1637, 0.2775, -1.2212, 0.1898, 0.0198, -0.2331, 1.2161], [ 0.7576, -0.4817, -0.5832, 0.1853, 1.2443, 0.9732, -0.3485, 1.0217], [ -2.0022, 1.1760, -0.6108, -0.4936, -0.2207, 1.0378, -0.1762, 1.5720], [ -1.4428, 1.2423, -0.7145, -2.4560, 0.3858, -0.3647, -0.8257, 0.6859], [ 0.7440, -1.0135, 1.5522, -0.5507, 0.5932, -0.1015, 2.6558, -0.3379], [ 0.9263, 1.2357, -0.5167, 2.7073, -0.7024, 1.6512, 1.8944, -1.1542], [ 1.1959, -0.4262, -0.1611, 0.4163, -1.6393, -1.5403, 1.2635, -1.2384], [ -0.3669, -1.2192, 0.4763, 2.5318, 1.1097, -1.2486, -0.3900, 0.8039], [ -0.5775, 0.3513, 1.0952, 2.6775, 0.8120, -1.3369, 0.2662, -1.1366], [ 0.0638, -0.3984, 0.6102, -0.2126, -0.0010, -0.1697, -0.4525, 0.4812], [ 0.5282, 0.2357, -0.2698, -0.6239, 0.8822, -1.1423, 0.8384, 1.1340], [ -1.3024, 1.1859, -0.4800, 0.5965, 0.5318, 1.3479, 0.2936, 0.0782], [ -0.9062, -1.3692, 1.9555, 0.5612, 0.4775, 1.1571, -0.7171, -0.0709]]) torch.Size([26, 8]) <class 'torch.Tensor'> Traceback (most recent call last): File "C:\Users\15522\PycharmProjects\PythonProject\文本张量tensorboard可视化\1.py", line 46, in <module> nnembeding_show() File "C:\Users\15522\PycharmProjects\PythonProject\文本张量tensorboard可视化\1.py", line 33, in nnembeding_show summarywriter = SummaryWriter() File "C:\Users\15522\PycharmProjects\PythonProject\.venv\lib\site-packages\torch\utils\tensorboard\writer.py", line 250, in __init__ self._get_file_writer() File "C:\Users\15522\PycharmProjects\PythonProject\.venv\lib\site-packages\torch\utils\tensorboard\writer.py", line 265, in _get_file_writer self.file_writer = FileWriter( File "C:\Users\15522\PycharmProjects\PythonProject\.venv\lib\site-packages\torch\utils\tensorboard\writer.py", line 76, in __init__ self.event_writer = EventFileWriter( File "C:\Users\15522\PycharmProjects\PythonProject\.venv\lib\site-packages\tensorboard\summary\writer\event_file_writer.py", line 72, in __init__ tf.io.gfile.makedirs(logdir) File "C:\Users\15522\PycharmProjects\PythonProject\.venv\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 513, in recursive_create_dir_v2 _pywrap_file_io.RecursivelyCreateDir(compat.path_to_bytes(path)) tensorflow.python.framework.errors_impl.FailedPreconditionError: runs is not a directory 进程已结束,退出代码为 1
最新发布
11-04
<think>我们面对的错误是:在使用PyTorch的SummaryWriter创建实例时,出现了`tensorflow.python.framework.errors_impl.FailedPreconditionError: runs is not a directory`错误。 根据引用[1]:该错误通常是由于指定的路径(这里是'runs')不是一个目录导致的。可能的原因有: 1. 指定的路径是一个文件(而不是目录)。 2. 路径中的某些部分不是目录(比如,路径中有一个本应是目录的部分实际上是一个文件)。 3. 目录不存在,但程序期望它存在。 但是,在PyTorch的SummaryWriter中,我们通常会指定一个目录来保存TensorBoard的事件文件。SummaryWriter在初始化时会尝试创建该目录(如果目录不存在),但为什么会出现这个错误呢? 注意:错误信息中提到了`tensorflow.python.framework`,这很奇怪,因为我们使用的是PyTorch。实际上,PyTorch的SummaryWriter在底层使用了TensorBoard的库(即`tensorboard`包),因此它依赖于TensorFlow的一些底层文件操作(或者至少是tensorboard库,而tensorboard库原本是用TensorFlow的一部分)。 因此,虽然我们使用的是PyTorch,但错误信息来自TensorFlow。这可能是由于tensorboard库在尝试写入事件文件时,将我们提供的路径(例如“runs”)当作一个已经存在的目录,但实际上它是一个文件,或者无法创建该目录。 解决方案: 1. 检查当前工作目录下是否已经存在一个名为“runs”的文件(而不是目录)。如果存在,则删除该文件,然后重新运行程序。 2. 检查是否有权限在当前目录下创建“runs”目录。 3. 尝试指定一个绝对路径,确保该路径的父目录存在,并且你有写入权限。 另外,我们可以通过以下方式在代码中指定一个不同的目录,或者确保目录被正确创建: 例如: ```python from torch.utils.tensorboard import SummaryWriter import os # 指定一个目录路径 log_dir = "runs/experiment1" # 确保目录存在 if not os.path.exists(log_dir): os.makedirs(log_dir) writer = SummaryWriter(log_dir=log_dir) ``` 但是,请注意,SummaryWriter本身会在目录不存在时尝试创建目录。所以,如果它没有创建,可能是由于权限问题,或者路径中的某个部分已经是一个文件。 根据引用[1]的提示,错误信息中的“XXX is not a directory”中的XXX就是路径。所以,请检查路径“runs”是否被文件占用。 步骤: 1. 查看当前目录下是否存在名为“runs”的文件或目录。 2. 如果存在文件“runs”,则删除它(或重命名),然后重新运行程序。 3. 如果存在目录“runs”,则可能是权限问题,检查权限。 另外,如果程序之前运行过,可能由于异常退出导致目录创建不完整,也可以尝试手动删除“runs”目录,然后重新运行。 总结:这个错误的核心是路径“runs”不是一个目录(而是一个文件)或者无法创建该目录。通过检查并确保该路径是一个可写的目录,即可解决。 注意:在Windows和Linux系统中,文件系统对文件名和目录名的大小写处理可能不同,但这里错误信息明确指出了“runs”,所以检查时注意名字一致。 为了避免混淆,还可以尝试使用不同的目录名,比如“tb_logs”,然后重新运行。 示例代码: ```python writer = SummaryWriter('tb_logs') # 使用一个新的目录名 ``` 如果成功,则说明之前的“runs”目录存在问题。 现在,让我们整理一个逐步的解决方案。 步骤: 1. 检查当前工作目录下是否存在名为“runs”的文件(注意,不是目录)。如果存在,删除该文件。 2. 如果存在“runs”目录,检查是否可写(可以尝试手动在该目录下创建文件)。 3. 如果不存在“runs”目录,则可能是程序没有权限创建目录。尝试以管理员权限运行,或者更改目录权限,或者换一个你有权限的目录。 4. 尝试使用绝对路径,比如: ```python writer = SummaryWriter(log_dir='/path/to/your/logs/runs') ``` 并确保`/path/to/your/logs`目录存在且可写。 5. 如果上述方法都不行,可以尝试重新安装tensorboard库,因为可能是库的版本问题导致创建目录失败。 ``` pip uninstall tensorboard pip install tensorboard ``` 根据引用[2]和引用[3]的错误,我们还应该注意环境和版本问题,但本错误与版本兼容性的关联性不大。不过,如果tensorboard库有bug,更新到最新版本可能有助于解决问题。 最后,如果问题仍然存在,可以尝试使用TensorBoardX(一个独立的TensorBoard库,不依赖TensorFlow)替代PyTorch自带的SummaryWriter。但PyTorch官方已经支持TensorBoard,所以一般不需要。 因此,优先采取以下步骤: 1. 删除已有的“runs”文件(如果存在)。 2. 确保程序有权限创建目录。 3. 指定一个明确的、可写的路径。 另外,根据引用[3]中提到的“CUDA out of memory”,这个错误与当前问题无关,但请注意,如果程序在创建SummaryWriter之后立即运行了模型,可能同时存在显存不足的问题,需要分别解决。 生成相关问题: §§相关问题§§ 1. 如何正确使用PyTorch的SummaryWriter? 2. 如何解决TensorBoard无法写入日志的问题? 3. 在分布式训练中如何使用SummaryWriter? 4. PyTorch的SummaryWriter与TensorBoardX有何区别? 注意:我们参考了引用[1]中关于“XXX is not a directory”错误的解决思路,所以添加引用[^1]。 </think>### 解决SummaryWriter创建时的`FailedPreconditionError: runs is not a directory`错误 该错误发生在使用PyTorch的`SummaryWriter`时,表明指定的日志目录`runs`存在问题。以下是逐步解决方案: #### 1. **验证目录状态** ```python import os log_dir = "runs" # 默认目录名 # 检查是否是文件而非目录 if os.path.isfile(log_dir): os.remove(log_dir) # 删除错误文件 print(f"已删除文件: {log_dir}") # 创建空目录 if not os.path.exists(log_dir): os.makedirs(log_dir, exist_ok=True) print(f"已创建目录: {log_dir}") ``` #### 2. **显式指定目录路径** 在`SummaryWriter`中明确指定目录路径: ```python from torch.utils.tensorboard import SummaryWriter # 推荐绝对路径 writer = SummaryWriter(log_dir=os.path.abspath("runs")) # 或自定义路径 # writer = SummaryWriter(log_dir="/path/to/valid_directory") ``` #### 3. **检查目录权限** ```python # 验证目录可写性 test_file = os.path.join(log_dir, "test.txt") try: with open(test_file, "w") as f: f.write("权限测试") os.remove(test_file) except PermissionError: print(f"目录无写入权限: {log_dir}") # 解决方案:更换目录或修改权限 ``` #### 4. **处理已存在目录** 若目录已存在但被锁定: ```python # 方法1:使用唯一目录名 import datetime timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") writer = SummaryWriter(log_dir=f"runs_{timestamp}") # 方法2:清空现有目录 import shutil if os.path.exists(log_dir): shutil.rmtree(log_dir) # 删除整个目录 os.makedirs(log_dir) ``` #### 错误原因分析 1. **目录/文件冲突**:`runs`可能是文件而非目录(常见于误操作)[^1] 2. **路径解析失败**:相对路径在不同环境可能解析错误 3. **权限问题**:程序无创建目录的权限 4. **TensorFlow依赖**:PyTorch的TensorBoard支持依赖TensorFlow文件操作API[^4] > 关键提示:虽然使用PyTorch,但`SummaryWriter`底层依赖TensorFlow的文件操作接口,因此报错显示`tensorflow.python.framework`[^4]。 #### 5. 验证解决方案 ```python # 最终验证代码 writer = SummaryWriter(log_dir=os.path.abspath("runs")) writer.add_scalar("test", 1.0, 1) # 写入测试数据 writer.close() print("SummaryWriter创建成功!") ``` ### 预防措施 1. **路径规范**: ```python # 始终使用绝对路径 import pathlib log_dir = pathlib.Path.cwd() / "runs" ``` 2. **环境隔离**: ```shell # 创建干净的Python环境 python -m venv tb_env source tb_env/bin/activate pip install torch torchvision tensorboard ``` 3. **版本兼容性**: ```python # 检查库版本兼容性 import torch, tensorboard print(f"Torch: {torch.__version__}, TensorBoard: {tensorboard.__version__}") ``` 参考官方[兼容性矩阵](https://github.com/pytorch/vision#installation)防止版本冲突[^2]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值