<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/scripts/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:h="http://www.w3.org/TR/html4/"><channel><title>Tian&apos;s Blog</title><description>The people who are crazy enough to think they can change the world are the ones who do</description><link>https://tian404.top</link><item><title>周记 Week25</title><link>https://tian404.top/blog/week25/week25</link><guid isPermaLink="true">https://tian404.top/blog/week25/week25</guid><description>2026-05-17 ~ 2026-05-31.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;临近期末结课，近期课内要忙的事情确实不少。不过在缺少足够阶段性反馈的大学中，定期总结自己最近的学习与工作，还是非常有必要的。持续的正反馈永远是坚持下去的一大源动力。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;临近学期末，最近陆续有一些课迎来了结课。上周，任老师给我们上完了最后一节数据结构与算法课。整体看下来，任老师的教学风格还是给我留下了很深刻的印象。今年是这门课第一次由我们学院的老师直接授课，不像往年该课程是由计算机学院的老师来上的，任老师更多是用实际的例子和问题来引出知识点。具体来说，可能在一节课的课件中，10页PPT内只有1张左右是纯粹在讲知识和概念的，剩下的大多是在提出实际问题与解决的思路。这样的教学方式，在当今GPT等模型编程能力超越绝大多数人的情况下，无疑是适应时代趋势的。具体的代码内容，日后会更多的交给模型，而人需要做的是，面对问题能够对问题进行建模和可解性的分析，并形成相应的解决框架，这里的框架包含了选择的算法，以及与之适应的数据结构，这正是这门课的核心所在。不过，这样的授课方式目前唯一的痛点在于，面对最后的期末考试时，由于和过去多年该课程的教学存在差异，或许往年题目的参考意义变小了，复习的难度也提高了。整体上来说，任老师面向问题的授课方式还是给我留下了很好的印象的。&lt;/p&gt;
&lt;p&gt;最近的另外一部分精力主要花在了寻找课题组上。在完成了相关基础知识的学习后，我也期待寻找到一个长期可以进行研究，做出一些成果的地方。在和学院的周老师交谈后，综合考量之下，还是决定趁着最后一段时间大一的宝贵身份，多投一些自己向往的地方的邮件。之所以说大一的身份宝贵，主要是因为大一意味着还有相对长的时间进行研究，有更多的可能性与长期做出成果的可能。投邮件这一块，还需要持续花费一些精力。在有了一定经验后，我发现寻找到感兴趣的老师，是一件很耗费时间的事情。LLM一定程度上可以辅助我搜索和总结老师的信息，节省了时间，但到最后依旧需要我去到老师的个人主页和Google Scholar界面，相对仔细的阅读和筛选。&lt;/p&gt;
&lt;p&gt;虽然说最后决定出去寻找自己内心更想去的地方，但这次与周老师的交流，还是收获了很多的。总结下来，大致有几点需要注意的。首先是课内课程，尽管由于我们专业的特殊性，我可以说我们是全校竞争最激烈的(据我观察，这一届是这样)，但还是尽可能让自己的均分能够上推免的线，保留一条不错的选择道路。其次就是，做研究是需要与别人交流的，至少是和自己领域内的人交流，多和相关的人构建联系，互相帮助，是取得成果的必要条件。最后就是内驱力的重要性。前段时间在李想的访谈中获取到的观点我认为很有参考价值：选择正确而难的事情，并且高速迭代。这里的正确而难，也可以表述为选的准而长，困难的事情往往需要较长时间才有可能成功，而高速迭代，则是取得领先的关键。近期的时间很大一部分花在了信息检索和筛选上，而自我知识和能力的迭代似乎接近停滞了，因此，有必要锻炼自身多线程并行的能力，从现在，从今天开始，恢复往常的能力迭代。一个很好的开始，就是每天阅读一篇CV领域的论文，可以从一些基础的但没完全搞懂的开始，比如BERT, CLIP, GAN等。大胆去做，永远不迟。&lt;/p&gt;
&lt;p&gt;最后，简单的提一句。交流下来，我认为周老师是一位非常负责任和真诚的老师。假如有同学发现自己的兴趣方向与老师的研究方向相符，且有足够的内驱力，愿意长期努力做出一些成果的，可以联系&lt;a href=&quot;https://gr.xjtu.edu.cn/spzhou/&quot;&gt;周老师&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;最近的天气颇有种冰火两重天的感觉，前几天温度还在30℃以上，夜跑的时候都很容易出一身汗，这几天却又跌回了20℃左右，穿短袖还有些冷。据我所知，东亚南亚这一块的气温最近也是非常魔幻，印度据说最高的体感温度能到60℃，堪比人间地狱。感谢喜马拉雅山脉，感谢秦岭，让西安的天气虽然略显魔幻，但还是比较舒适的。今年春季后期有可能会出现厄尔尼诺，希望7月的时候气温可以适宜一些。&lt;/p&gt;
&lt;p&gt;最近的内容大抵就是这些了。我想拿前文中提到的那句话，作为结尾：选得正确，选得难，并进行高速的迭代。道阻且长，行则将至。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/96951055&lt;/p&gt;</content:encoded><h:img src="/_astro/Week25.p_D57_yO.jpg"/><enclosure url="/_astro/Week25.p_D57_yO.jpg"/></item><item><title>周记 Week24</title><link>https://tian404.top/blog/week24/week24</link><guid isPermaLink="true">https://tian404.top/blog/week24/week24</guid><description>2026-04-27 ~ 2026-05-17.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近要忙的事情比较多，还是抽出一些时间总结一下过去几周发生的事。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;这几周里相对重要的事情应该是高数的期中考试了。最后的结果比我想象中的要好，但可能和整体比较的话，没有上90还是比较可惜的。主要是平时也没花时间在大量刷题上，考试的时候有部分比较基础的内容没有写出来，亦或是想当然了，期末的复习时间相对充足，应该能有改善。不过放下和别人比较的思维也是成长的一步，对我自己来说，期中成绩还算是比较符合预期的。下周还有一次概率论的随堂期中考，应该会比高数轻松一些。&lt;/p&gt;
&lt;p&gt;此外，这几周做的另一件事情便是暂时停下脚步，尽可能从广泛的渠道，了解专业领域内有哪些方向，大家都在做一些什么工作。在有了适量的了解后，最终选择了一位外校的老师发送了陶瓷邮件。不过不出所料，截至这篇文章写作的时间，并没有收到回复。陶瓷进组这件事情，往往第一次都是相对困难的。根据之前了解到的信息，我决定直接向外校的老师陶瓷。但是现在回过头来仔细思考一下，从第一性原理出发，第一次的陶瓷去哪里似乎并没有什么区别。初次科研的经历，目的是在于形成自己的一套方法论，以及获得顶会的发表，作为启动的资本，而不是要争取日后长久留在组内的机会。因此，地点似乎并不是什么主要的影响因素。从资源角度来看，本校的算力资源的确相对不足，不过对于实现初次科研的目的来说，已经足够了。如此一来，选择本校老师的平台第一次科研经历，未尝不可。下周概率论的考试告一段落后，可以进行一定的尝试。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;最近花了一些时间改进了自己的博客网站。一方面是优化了一些排版内容，另一方面是给页面增加了浏览次数统计、点赞和评论功能。主要利用Waline实现。由于前人已经做了很多开源的工作，结合Cursor的帮助，整体实现还是比较容易的。部署后，博客页面整体上也看起来更加协调，美观，功能完整了许多。不得不说，Cursor是自己掏了钱订阅的额度，自然就会想着在一个月内把额度尽可能用完。倘若依旧是用网页端的免费额度来进行代码编写，或许博客的这些改进升级还得等很久。&lt;/p&gt;
&lt;p&gt;前几周借着大英赛省决赛的机会，逛了逛西电的校园。相比于西交，西电的校园还是更加符合我对于大学的印象，可能主要还是路的原因。西电的路更多是柏油路，西交有不少路是水泥路，更有历史气息一些。一大早出学校南门，发现有不少出来摆早市的，甚至好像不少早饭卖的比学校食堂便宜。校门外的世界，的确要更有烟火气。时常去路上，去公园里走走，看到各色的人做着自己的事，或许能够意识到，这个世界上，并不是所有人都被无止境的效率至上裹挟，未来并不属于走的快的人，而是属于能够热爱生活，感受世界的人。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/144872372&lt;/p&gt;</content:encoded><h:img src="/_astro/Week24.BKOb4DbL.jpg"/><enclosure url="/_astro/Week24.BKOb4DbL.jpg"/></item><item><title>Vanilla ViT复现</title><link>https://tian404.top/blog/vanilla-vit/vanilla-vit</link><guid isPermaLink="true">https://tian404.top/blog/vanilla-vit/vanilla-vit</guid><description>A reimplementation of ViT, with adjustments for laptop hardware</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Transformer架构被提出后，因为包括但不限于适用领域、模型参数量的可扩展性，得到了广泛的使用。最初，Transformer被用于翻译领域，后来，Google团队在论文 &lt;em&gt;An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale&lt;/em&gt; 中，提出了将图像token化后，利用transformer架构进行图像分类任务的方法。&lt;/p&gt;
&lt;h2&gt;模型架构&lt;/h2&gt;
&lt;p&gt;整体上来讲，ViT的初始模型架构尽可能保持了和原始Transformer的一致性，但只使用了encoder block，未使用decoder，主要还是分类任务不需要decoder的原因。其主要的创新点在于将图片分割成了若干个16 × 16的小块，并通过线性投射层，将每个patch转化为768维的向量，其实本质上就是transformer中的embedding。形式统一后，后续的工作就和Transformer没有太多的区别了。&lt;/p&gt;
&lt;p&gt;细节上，由于将图片切割为小块，丧失了原本的位置信息，所以ViT采用了位置编码，并将编码结果直接与上文中768维的向量相加，得到每个小块最终的embedding。位置编码的具体数值是可学习的参数，类似于BERT编码的思路。&lt;/p&gt;
&lt;p&gt;同时，由于论文中ViT被应用于图像分类任务，所以在输入层面，增加了一个CLS token，维度也为768维，用于模型最后判断图像类别。&lt;/p&gt;
&lt;h2&gt;代码实现&lt;/h2&gt;
&lt;p&gt;整体的模型代码依旧是在AI辅助下Vibe coding完成，核心的model文件代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;from typing import Tuple

import torch
import torch.nn as nn

## turn the image into patches, then project them to a sequence of vectors
class PatchEmbed(nn.Module):
    def __init__(self, image_size: int, patch_size: int, in_channels: int, embed_dim: int) -&gt; None:
        super().__init__()
        if image_size % patch_size != 0:
            raise ValueError(&quot;image_size must be divisible by patch_size&quot;)
        self.grid_size = image_size // patch_size
        self.num_patches = self.grid_size * self.grid_size
        self.proj = nn.Conv2d(in_channels, embed_dim, kernel_size=patch_size, stride=patch_size)

    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:
        x = self.proj(x)
        x = x.flatten(2).transpose(1, 2)
        return x

## define the MLP layer inside the transformer block
class MLP(nn.Module):
    def __init__(self, dim: int, mlp_ratio: float, dropout: float) -&gt; None:
        super().__init__()
        hidden_dim = int(dim * mlp_ratio)
        self.fc1 = nn.Linear(dim, hidden_dim)
        self.act = nn.GELU()
        self.fc2 = nn.Linear(hidden_dim, dim)
        self.drop = nn.Dropout(dropout)

    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:
        x = self.fc1(x)
        x = self.act(x)
        x = self.drop(x)
        x = self.fc2(x)
        x = self.drop(x)
        return x

## define one single transformer block
class EncoderBlock(nn.Module):
    def __init__(self, dim: int, num_heads: int, mlp_ratio: float, dropout: float, attention_dropout: float) -&gt; None:
        super().__init__()
        self.norm1 = nn.LayerNorm(dim)
        self.attn = nn.MultiheadAttention(
            embed_dim=dim,
            num_heads=num_heads,
            dropout=attention_dropout,
            batch_first=True,
        )
        self.drop_path1 = nn.Dropout(dropout)
        self.norm2 = nn.LayerNorm(dim)
        self.mlp = MLP(dim, mlp_ratio, dropout)

        self.drop_path2 = nn.Dropout(dropout)

    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:
        attn_input = self.norm1(x)
        attn_out, _ = self.attn(attn_input, attn_input, attn_input, need_weights=False)
        x = x + self.drop_path1(attn_out)
        x = x + self.drop_path2(self.mlp(self.norm2(x)))
        return x

## build the whole Vision Transformer model
class VisionTransformer(nn.Module):
    def __init__(
        self,
        image_size: int = 160,
        patch_size: int = 16,
        in_channels: int = 3,
        num_classes: int = 10,
        embed_dim: int = 384,
        depth: int = 8,
        num_heads: int = 6,
        mlp_ratio: float = 4.0,
        dropout: float = 0.0,
        attention_dropout: float = 0.0,
    ) -&gt; None:
        super().__init__()
        self.patch_embed = PatchEmbed(image_size, patch_size, in_channels, embed_dim)
        num_patches = self.patch_embed.num_patches

        self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
        self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + 1, embed_dim))
        self.pos_drop = nn.Dropout(dropout)

        self.blocks = nn.ModuleList(
            [
                EncoderBlock(
                    dim=embed_dim,
                    num_heads=num_heads,
                    mlp_ratio=mlp_ratio,
                    dropout=dropout,
                    attention_dropout=attention_dropout,)
                for _ in range(depth)
            ]
        )
        self.norm = nn.LayerNorm(embed_dim)
        self.head = nn.Linear(embed_dim, num_classes)
        self._init_weights()

    def _init_weights(self) -&gt; None:
        nn.init.trunc_normal_(self.pos_embed, std=0.02)
        nn.init.trunc_normal_(self.cls_token, std=0.02)
        for module in self.modules():
            if isinstance(module, nn.Linear):
                nn.init.trunc_normal_(module.weight, std=0.02)
                if module.bias is not None:
                    nn.init.zeros_(module.bias)
            elif isinstance(module, nn.LayerNorm):
                nn.init.ones_(module.weight)
                nn.init.zeros_(module.bias)
    ## output the CLS token for the classification task
    def forward_features(self, x: torch.Tensor) -&gt; torch.Tensor:
        batch_size = x.shape[0]
        x = self.patch_embed(x)
        cls_tokens = self.cls_token.expand(batch_size, -1, -1)
        x = torch.cat((cls_tokens, x), dim=1)
        x = x + self.pos_embed
        x = self.pos_drop(x)
        for blk in self.blocks:
            x = blk(x)
        x = self.norm(x)
        return x[:, 0]

    ## output the logits for the classification task
    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:
        x = self.forward_features(x)
        return self.head(x)

## give an interface to build the Vision Transformer model
def build_vit(cfg: dict) -&gt; Tuple[VisionTransformer, int]:
    model_cfg = cfg[&quot;model&quot;]
    model = VisionTransformer(
        image_size=cfg[&quot;image_size&quot;],
        patch_size=model_cfg[&quot;patch_size&quot;],
        num_classes=cfg[&quot;num_classes&quot;],
        embed_dim=model_cfg[&quot;embed_dim&quot;],
        depth=model_cfg[&quot;depth&quot;],
        num_heads=model_cfg[&quot;num_heads&quot;],
        mlp_ratio=model_cfg[&quot;mlp_ratio&quot;],
        dropout=model_cfg[&quot;dropout&quot;],
        attention_dropout=model_cfg[&quot;attention_dropout&quot;],
    )
    n_params = sum(p.numel() for p in model.parameters())
    return model, n_params
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;考虑到笔记本电脑的性能局限，模型中适当减少了参数量、Attention block的堆叠数量以及分类种类的数量。&lt;/p&gt;
&lt;h2&gt;结果分析&lt;/h2&gt;
&lt;p&gt;Attention block数量为8，64 epoch训练结果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;result2-small.png&quot; alt=&quot;result2-small&quot;&gt;&lt;/p&gt;
&lt;p&gt;Attention block数量为16，64 epoch训练结果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;result2-big.png&quot; alt=&quot;result2-big&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到，ViT在10分类任务上达到了70%左右的准确率，这对于小模型、短训练时间而言是一个不错的结果。&lt;/p&gt;
&lt;p&gt;为了适配笔记本的硬件条件，选择的数据集为ImageNet的部分，即 Imagenette2-160数据集。由于数据量不足，可以发现，随着训练轮数的增加，模型在training set上的准确率逐渐远超validation set上的准确率，出现了明显的过拟合问题。模型本身已采用dropout等方式避免过拟合，若想缓解此问题，可以做的是进一步增大训练数据集。和CNN相比，ViT少了很多归纳偏置，几乎一切特征都是模型从头自主学习的。Bitter Lesson中讲到， &lt;em&gt;The biggest lesson that can be read from 70 years of AI research is that general methods that leverage computation are ultimately the most effective, and by a large margin.&lt;/em&gt; 比起那些运用人们的先验知识，精心设计出来的各种方法，往往更加有效的，是那些能够放下人们主观预设，或者叫归纳偏置，转而充分利用计算机的计算能力，让信息充分流通而得到结果的方法。在我看来，当数据量足够大的时候，ViT性能得以超越CNN，一部分原因就是因为ViT的attention机制使得图片的信息在各个patch之间自由流通，而CNN的多层结构，逐步提取图像特征的特点，则一定程度上阻碍了图像内部信息的传递，因此难以实现更好的效果。从我目前的知识来看，似乎有一种趋势是，在AI领域中，越是利于原始信息、数据的流通、传递、沟通的方法，往往最后的效果越好；越是利用人们的“聪明才智”精心设计出的各种模式识别范式，效果往往越差。当然，归纳偏置的缺少，带来的缺点则是模型需要更多的数据，才能学习到其所需的知识、特征。&lt;/p&gt;
&lt;p&gt;从数据结果来看，可以发现模型参数量扩大后(14.53M-&gt;28.73M)，最佳性能从70.6%提升到了73%。这一结果也印证了scaling law揭示的规律，或者也可以说印证了bitter lesson中对于计算能力的强调。&lt;/p&gt;
&lt;p&gt;至此，ViT的简单复现工作便完成了。整体上来说还是非常有意思的，自己训练模型的过程也是第一次体会到了为什么现代的AI模型训练会如此需要显卡、计算卡。这样一个小的模型，单个epoch训练时长就要20-30s。通读Google团队的ViT论文原文，其实我是感觉字里行间透露着一种“我有钱，我有卡，但一般的实验室没有，所以我能做这些实验”的灰色幽默。或许在AI领域，以后自己所处的团队有多少资源，尤其是计算资源，的确是一个需要考虑的因素。模型的源代码已上传至&lt;a href=&quot;https://github.com/Tian4O4/Easy_ViT&quot;&gt;GitHub&lt;/a&gt;，如果有兴趣，可以去看看。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/131151378&lt;/p&gt;</content:encoded><h:img src="/_astro/Vanilla-ViT.DDw-17t6.jpg"/><enclosure url="/_astro/Vanilla-ViT.DDw-17t6.jpg"/></item><item><title>周记 Week23</title><link>https://tian404.top/blog/week23/week23</link><guid isPermaLink="true">https://tian404.top/blog/week23/week23</guid><description>2026-04-13 ~ 2026-04-26.</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;时常我会有一种时间加速了的感觉，最近尤为明显。总是感觉自己没有做什么事情，便过去了好多天。若是如此，定期记录一下最近的进展，或许是一种留存下一些记忆的方法。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;虽说校庆放假完，马上又要到五一假期了，但由于五一前还有最让我头疼的高数期中考，目前我倒是也没有太多心思期待即将到来的五一。虽说高数的知识我早已自学完成，但学会知识和能够在应试考试中取得良好的分数，几乎是两件完全不同的事情，考前几天还是得花一些时间做一些题的。&lt;/p&gt;
&lt;p&gt;最近的课余时间主要花在了再次回顾Transformer以及其衍生出来的Vision Transformer上。不得不说很多时候的确深感自己脑子不够用，光是Transformer一个模型，其实前后算下来可能学了有四五遍，最近这一次才勉强算是理解了这个模型。其实整体上看下来，Transformer并没有在做多么复杂的事情，其实就是把一句话中每个token的embedding，通过上下文的语境关联，进行优化，得到语境中更加准确的embedding，利于最后的下游任务的完成。本质上来讲，就是利用矩阵乘法，提供了一种上下文之间的信息互相交流、融合的途径，得到了比以前的模型更加准确的词表征，因此也获得了更好的效果。&lt;/p&gt;
&lt;p&gt;此外，也是利用Cursor实现了一个简易的ViT复现，相比于之前的MNIST，这次明显感觉到了现代深度学习对于硬件，或者说显卡、计算卡的需求。MNIST的训练几秒钟就可以完成一轮，这次的ViT在有意缩小数据集和模型后，一轮训练还是需要20-30s。&lt;/p&gt;
&lt;p&gt;值得一说的是，我专门花时间阅读了Transformer和ViT两个模型的原论文。这算是我第一次完整阅读论文，算是学习到了一些论文阅读的方法。比如说先阅读标题、作者、综述和结论，不必先阅读主体部分。对于深度学习领域的论文，有时候或许只需要关注文中的图片，因为这已经涵盖了文字的内容。&lt;/p&gt;
&lt;p&gt;之前报的大英赛校赛这几天结果出来了，运气不错入选了少数可以去参加省级比赛的名单。大抵是因为高中以及之前受到的英语教育，在全国范围内的确算是领先的，我还是有一些老本可以吃，还是很幸运能有这样一个国际化的成长平台。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;最近这几天温度忽高忽低，前几天倒春寒让刚刚穿上短袖的我不得不又披上了外套，不过到了周末温度又明显上去了。好在没有因为温度变化而感冒之类的。&lt;/p&gt;
&lt;p&gt;其他的可能也没什么了，最近F1处在休赛期，勇士队又是一如既往的早早被淘汰，只能偶尔点开比赛看看有没有精彩的画面。&lt;/p&gt;
&lt;p&gt;下周这时候应该早已回到了家中，在此之前，希望周三的高数期中考能够一切顺利。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/126590286&lt;/p&gt;</content:encoded><h:img src="/_astro/Week23.Bq0_qJJW.jpg"/><enclosure url="/_astro/Week23.Bq0_qJJW.jpg"/></item><item><title>MNIST手写数字识别</title><link>https://tian404.top/blog/mnist-recognition/mnist-recognition</link><guid isPermaLink="true">https://tian404.top/blog/mnist-recognition/mnist-recognition</guid><description>Hello World, Hello Deep Learning</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近的大量的时间都用在了实现MNIST手写数字识别的小项目上，最终也是成功在几天前完成了整个项目，实现了不错的效果。这篇博客中，将简要回顾整个项目的实现过程。&lt;/p&gt;
&lt;h2&gt;MNIST？&lt;/h2&gt;
&lt;p&gt;首先需要解决的是MNIST是什么的问题。简单来说，这是一个用来训练机器学习模型的数据集，内容主要为手写数字。&lt;/p&gt;
&lt;p&gt;MNIST，全称为Modified National Institute of Standards and Technology database，是机器学习与计算机视觉领域最具标志性、使用最广泛的基础手写数字数据集，于1998年由Yann LeCun等人基于美国国家标准与技术研究院（NIST）原始数据重构后发布。可以说这是属于深度学习领域自己的“Hello world”。&lt;/p&gt;
&lt;p&gt;该数据集共包含70000张28×28像素的灰度图像，涵盖0至9共10个数字类别，划分为60000张训练集与10000张测试集。训练样本来源于美国人口普查局员工和高中生书写的数字字迹，一定程度上保证了分布的泛化性。研究团队对于数字笔迹进行了一定预处理，便于识别，形成了如今的MNIST数据集。&lt;/p&gt;
&lt;p&gt;1998年LeCun等人基于该数据提出LeNet-5，首次验证了卷积神经网络 (CNN)在模式识别上的压倒性优势。此后，更多的DL架构和算法涌现，在该数据集上的准确率也不断上升。虽然MNIST数据集存在着过于简单，难以泛化的众多局限性，但也正是因为其简易性，得以在如今的CPU或GPU上很快的完成训练。总体而言，这是很好的入门DL的实践项目。&lt;/p&gt;
&lt;h2&gt;CNN&lt;/h2&gt;
&lt;p&gt;如今在CV (计算机视觉)领域中，已经出现了很多优秀的算法。笔者本次实现的模型，是基于最传统的CNN架构实现的，并未选择后续的Transformer等架构。&lt;/p&gt;
&lt;p&gt;那么CNN是什么呢？CNN，全称为Convolutional Neural Networks，中文名为卷积神经网络。顾名思义，就是普通神经网络融合了卷积的一种变体。该神经网络在CV领域有很好的效果，可以用于图像分类、人脸识别、目标检测、图像生成与风格迁移 (e.g. 用梵高画作的风格重新绘制外滩夜景) 等众多任务上。&lt;/p&gt;
&lt;p&gt;关于CNN的具体原理和实现方法，可以找到原始论文，或者是寻找到网课资源进行了解。在这里，笔者想谈论一些关于CNN的直观认识。从根本上来说，CNN是在解决如何让计算机理解一张图片的问题。对此，CNN给出的解决方案是：提取图像的特征。更加细致的来讲，就是让计算机自己学习得到一些基础的“模板”，进而通过相似度的分析，寻找图片中是否存在这样的基本结构。这里的基本结构，或大或小，可以是很简单的颜色、曲线等等，也可以是各个基本要素的组合。对于“相似度”的判断，则是利用了中学便学习过的向量内积，以卷积的形式体现了出来。通过多层的卷积网络，计算机得以从初级特征的不断组合中，判断出图片的结构形态，实现对于图像的特征提取。&lt;/p&gt;
&lt;h2&gt;实现方法&lt;/h2&gt;
&lt;p&gt;得益于近些年Coding Agent的发展，在我看来，当下的编程逻辑已经相较于五年前已经发生了极大的变化。过去强调的更多是自主完成完整代码的能力，而当下，在完成了基础的编程语法和数据结构、算法学习后，我们不再需要自己过多关注代码的具体实现，而是要花更多的精力构思整体的模型架构和组织逻辑，并准确的告诉AI详细的构建逻辑。在代码生成后，再自主审查代码的逻辑是否完整。Coding Agent的发展让我们可以解放双手，花更多的精力在编程思想上，而非相对机械化的编程实现。&lt;/p&gt;
&lt;p&gt;因此，借助于Cursor，我实现了完整的模型构建。关于Cursor，其实就是基于开源的VSCode框架，深度融合了AI的IDE。Cursor除了自身提供的tab补全操作外，其能力很大程度上依赖于外接的大模型，也就是平时常说的Gemini、GPT、Kimi之类。在亲身使用Cursor之前，曾困扰我很久的问题是：这和直接在网页或App中和大模型对话，生成代码有什么区别？在使用后，不难发现Cursor对大模型做了专门的优化，他可以自主根据用户的需求，生成项目的计划，并据此生成复杂的完整项目文件。相比之下，网页端的LLM则往往只能生成单段的代码，便捷性和效率远不如使用Cursor的体验。&lt;/p&gt;
&lt;p&gt;对于模型的主体部分，笔者选择了6层卷积层+3次Skip connection的架构，辅以上下游的初级特征提取卷积层、全连接层等。对于MNIST的识别，少量的卷积层已经足够。Pytorch库给模型的构建提供了很大的帮助。模型架构部分的代码实现如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;from __future__ import annotations

from dataclasses import dataclass
from typing import Optional

import torch
import torch.nn as nn

## self defined CNN block
class ConvBNAct(nn.Module):

    def __init__(
        self,
        in_ch: int,
        out_ch: int,
        *,
        kernel_size: int = 3,
        stride: int = 1,
        padding: Optional[int] = None,
        groups: int = 1,
        act: bool = True,
    ) -&gt; None:
        super().__init__()
        if padding is None:
            padding = kernel_size // 2
        self.conv = nn.Conv2d(in_ch, out_ch, kernel_size, stride=stride, padding=padding, groups=groups, bias=False)
        self.bn = nn.BatchNorm2d(out_ch)
        self.act = nn.ReLU(inplace=True) if act else nn.Identity()

    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:
        return self.act(self.bn(self.conv(x)))

## self defined ResNet block
class ResidualBlock(nn.Module):
    &quot;&quot;&quot;
    A small ResNet-style block (2 convs) adapted for MNIST.
    - If shape changes (stride!=1 or channels differ), uses a 1x1 projection on the skip.
    &quot;&quot;&quot;

    def __init__(self, in_ch: int, out_ch: int, *, stride: int = 1, dropout_p: float = 0.0) -&gt; None:
        super().__init__()
        self.conv1 = ConvBNAct(in_ch, out_ch, kernel_size=3, stride=stride, act=True)
        self.drop = nn.Dropout2d(p=dropout_p) if dropout_p &gt; 0 else nn.Identity()
        self.conv2 = ConvBNAct(out_ch, out_ch, kernel_size=3, stride=1, act=False)

        if stride != 1 or in_ch != out_ch:
            self.skip = ConvBNAct(in_ch, out_ch, kernel_size=1, stride=stride, padding=0, act=False)
        else:
            self.skip = nn.Identity()

        self.out_act = nn.ReLU(inplace=True)

    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:
        identity = self.skip(x)
        out = self.conv1(x)
        out = self.drop(out)
        out = self.conv2(out)
        out = out + identity
        return self.out_act(out)

## save the hyperparameters of the model
@dataclass(frozen=True)
class MNISTNetConfig:
    stem_channels: int = 32
    stage2_channels: int = 64
    stage3_channels: int = 128
    blocks_stage1: int = 2
    blocks_stage2: int = 2
    blocks_stage3: int = 2
    block_dropout_p: float = 0.05
    head_dropout_p: float = 0.15

## build the whole CNN model
class MNISTNet(nn.Module):
    &quot;&quot;&quot;
    Custom CNN for MNIST (not LeNet): Conv stem + residual stages + global average pooling.
    Input:  (B, 1, 28, 28)
    Output: (B, 10) logits
    &quot;&quot;&quot;

    def __init__(self, cfg: MNISTNetConfig | None = None) -&gt; None:
        super().__init__()
        self.cfg = cfg or MNISTNetConfig()

        c1 = self.cfg.stem_channels
        c2 = self.cfg.stage2_channels
        c3 = self.cfg.stage3_channels

        self.stem = nn.Sequential(
            ConvBNAct(1, c1, kernel_size=3, stride=1),
            ConvBNAct(c1, c1, kernel_size=3, stride=1),
        )

        self.stage1 = self._make_stage(c1, c1, num_blocks=self.cfg.blocks_stage1, stride=1)
        self.down1 = nn.MaxPool2d(kernel_size=2, stride=2)  # 28 -&gt; 14

        self.stage2 = self._make_stage(c1, c2, num_blocks=self.cfg.blocks_stage2, stride=1)
        self.down2 = ConvBNAct(c2, c2, kernel_size=3, stride=2)  # 14 -&gt; 7
        self.stage3 = self._make_stage(c2, c3, num_blocks=self.cfg.blocks_stage3, stride=1)

        self.pool = nn.AdaptiveAvgPool2d((1, 1))
        self.head = nn.Sequential(
            nn.Flatten(),
            nn.Dropout(p=self.cfg.head_dropout_p),
            nn.Linear(c3, 10),
        )

        self._init_weights()

    def _make_stage(self, in_ch: int, out_ch: int, *, num_blocks: int, stride: int) -&gt; nn.Sequential:
        blocks: list[nn.Module] = []
        blocks.append(ResidualBlock(in_ch, out_ch, stride=stride, dropout_p=self.cfg.block_dropout_p))
        for _ in range(num_blocks - 1):
            blocks.append(ResidualBlock(out_ch, out_ch, stride=1, dropout_p=self.cfg.block_dropout_p))
        return nn.Sequential(*blocks)

    def _init_weights(self) -&gt; None:
        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                nn.init.kaiming_normal_(m.weight, mode=&quot;fan_out&quot;, nonlinearity=&quot;relu&quot;)
            elif isinstance(m, nn.BatchNorm2d):
                nn.init.ones_(m.weight)
                nn.init.zeros_(m.bias)
            elif isinstance(m, nn.Linear):
                nn.init.normal_(m.weight, mean=0.0, std=0.01)
                nn.init.zeros_(m.bias)

    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:
        x = self.stem(x)
        x = self.stage1(x)
        x = self.down1(x)
        x = self.stage2(x)
        x = self.down2(x)
        x = self.stage3(x)
        x = self.pool(x)
        return self.head(x)

def create_model() -&gt; MNISTNet:
    return MNISTNet()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;剩下的就是一些基础的数据集准备、训练、评估、测试的代码了。&lt;/p&gt;
&lt;p&gt;这里值得一提的是，在训练时，第一次使用到了CUDA进行训练。什么是CUDA呢？简单来讲，就是由NVIDIA公司开发的一种并行计算平台和编程模型，他能够让电脑的显卡作用不仅仅局限于渲染图形，而是利用显卡进行并行式的训练计算。该计算平台大大加快了深度学习模型的训练速度。&lt;/p&gt;
&lt;p&gt;在训练中，可以发现模型逐渐学习得到filter的权重数值，并不断更新性能最佳的模型参数的过程：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;training_process.png&quot; alt=&quot;training process&quot;&gt;&lt;/p&gt;
&lt;p&gt;最终可以发现，设计的模型在测试集上达到了99.62%的准确率，符合现代模型对于较为简易的MNIST数据集识别的准确率标准。&lt;/p&gt;
&lt;h2&gt;One more thing...&lt;/h2&gt;
&lt;p&gt;故事到这里，其实已经完成了一个完整的MNIST手写数字识别项目了。但倘若到此为止，那的确是有些单调了。&lt;/p&gt;
&lt;p&gt;所以，在模型训练的基础上，我又制作了一个可视化的小程序。该小程序可以让用户利用鼠标自行书写数字，程序将实时显示0-9各自的概率，并得出判断结果。程序中核心的DrawApp类实现如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;class DrawApp:
    def __init__(self, root: tk.Tk, *, model: torch.nn.Module, device: torch.device, canvas_px: int = 280) -&gt; None:
        self.root = root
        self.model = model
        self.device = device

        self.canvas_px = canvas_px
        self.brush = 14
        self.debounce_ms = 10
        self._scheduled: Optional[str] = None

        self.last_x = None
        self.last_y = None

        root.title(&quot;Hello MNIST&quot;)

        self.canvas = tk.Canvas(root, width=canvas_px, height=canvas_px, bg=&quot;black&quot;, highlightthickness=1)
        self.canvas.grid(row=0, column=0, rowspan=12, padx=10, pady=10)

        # Offscreen buffer (PIL) for preprocessing.
        self.buffer = Image.new(&quot;L&quot;, (canvas_px, canvas_px), 0)
        self.draw = ImageDraw.Draw(self.buffer)

        self.canvas.bind(&quot;&amp;#x3C;B1-Motion&gt;&quot;, self.on_paint)
        self.canvas.bind(&quot;&amp;#x3C;Button-1&gt;&quot;, self.on_paint)

        self.pred_label = tk.Label(root, text=&quot;Draw a digit...&quot;, font=(&quot;Consolas&quot;, 14))
        self.pred_label.grid(row=0, column=1, sticky=&quot;w&quot;, padx=10)

        self.prob_labels = []
        for i in range(10):
            lbl = tk.Label(root, text=f&quot;{i}: 0.0000&quot;, font=(&quot;Consolas&quot;, 12))
            lbl.grid(row=i + 1, column=1, sticky=&quot;w&quot;, padx=10)
            self.prob_labels.append(lbl)

        btn_frame = tk.Frame(root)
        btn_frame.grid(row=11, column=1, sticky=&quot;w&quot;, padx=30, pady=(10, 10))

        tk.Button(btn_frame, text=&quot;Clear&quot;, command=self.clear).grid(row=0, column=0, padx=(0, 8))

        self._update_probs(np.zeros(10, dtype=np.float32))
        self.canvas.bind(&quot;&amp;#x3C;ButtonRelease-1&gt;&quot;, self.on_release)

    def clear(self) -&gt; None:
        self.canvas.delete(&quot;all&quot;)
        self.buffer = Image.new(&quot;L&quot;, (self.canvas_px, self.canvas_px), 0)
        self.draw = ImageDraw.Draw(self.buffer)
        self.pred_label.config(text=&quot;Draw a digit...&quot;)
        self._update_probs(np.zeros(10, dtype=np.float32))

        self.last_x = None
        self.last_y = None

    def on_release(self, event: tk.Event) -&gt; None:
        self.last_x = None
        self.last_y = None

    def on_paint(self, event: tk.Event) -&gt; None:
        x, y = int(event.x), int(event.y)

        if self.last_x is not None:
            self.canvas.create_line(
                self.last_x, self.last_y, x, y,
                width=self.brush, fill=&quot;white&quot;, capstyle=&quot;round&quot;, smooth=True
            )
            self.draw.line(
                [self.last_x, self.last_y, x, y],
                fill=255, width=self.brush
            )

        r = self.brush // 2
        self.canvas.create_oval(x - r, y - r, x + r, y + r, fill=&quot;white&quot;, outline=&quot;white&quot;)
        self.draw.ellipse([x - r, y - r, x + r, y + r], fill=255)

        self.last_x = x
        self.last_y = y

        if self._scheduled is not None:
            try:
              self.root.after_cancel(self._scheduled)
            except Exception:
                pass
        self._scheduled = self.root.after(self.debounce_ms, self.predict_now)

    @torch.no_grad()
    def predict_now(self) -&gt; None:
        t, _debug28 = preprocess_to_mnist(self.buffer)
        t = t.to(self.device)
        logits = self.model(t)[0].detach().float().cpu().numpy()
        probs = softmax_np(logits).astype(np.float32)
        self._update_probs(probs)

    def _update_probs(self, probs: np.ndarray) -&gt; None:
        top = int(np.argmax(probs)) if probs.size == 10 else -1
        if top &gt;= 0 and probs.sum() &gt; 0:
            self.pred_label.config(text=f&quot;Prediction: {top}    (confidence={probs[top]:.4f})&quot;)
        else:
            self.pred_label.config(text=&quot;Draw a digit...&quot;)

        for i in range(10):
            txt = f&quot;{i}: {probs[i]:.4f}&quot;
            self.prob_labels[i].config(text=txt, fg=(&quot;lime&quot; if i == top else &quot;grey&quot;))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;感谢你能看到这里。至此，我们已经完成了MNIST手写数字识别项目的全过程。程序的所有源代码及参数权重均已&lt;a href=&quot;https://github.com/Tian4O4/MNIST_Visualization&quot;&gt;开源于GitHub&lt;/a&gt;。假如你对于模型的代码实现、训练参数，亦或是最后的可视化程序感兴趣，欢迎去GitHub上将代码下载下来，自己试一试，娱乐性还是很强的。&lt;/p&gt;
&lt;p&gt;Hello World, Hello Deep Learning![^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/121623729&lt;/p&gt;</content:encoded><h:img src="/_astro/MNIST.CS64Erb-.jpg"/><enclosure url="/_astro/MNIST.CS64Erb-.jpg"/></item><item><title>周记 Week22</title><link>https://tian404.top/blog/week22/week22</link><guid isPermaLink="true">https://tian404.top/blog/week22/week22</guid><description>2026-03-22 ~ 2026-04-12.</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这次的周记算是迟到了，本来还想继续拖下去的，但想想还是尽量不要开这个头为妙，于是便决定在这一周的最后打开电脑，简单记录一下这两周的事情。&lt;/p&gt;
&lt;h2&gt;假期&lt;/h2&gt;
&lt;p&gt;这两周因为是130周年校庆 (校庆那天学校里好像来了很多大人物) ，叠加清明假期，最终整体上是获得了长达五天的小长假。不得不说，对于本科生的我而言，学校校庆实打实的放假才是真正的庆祝，让我真正能够有时间从平时的高压环境中短暂解脱。&lt;/p&gt;
&lt;p&gt;五天的假期长度正好处在了回家和留校的交界处，最终我还是选择了回家，而且可以说是以最快速度的回家。假期的前一天正好是周五，在上学期选课的时候，为了能给自己多一些周末时间，我特意将所有课的时间避开了周五的下午和晚上，于是在周五上午最后一节离散数学结束后，我便直接离开了学校前往西安站。&lt;/p&gt;
&lt;p&gt;其实我本可以选择留校，毕竟来回一次的交通费基本就是半个月的生活费，还是不小的一笔开支，但为了自己能开心一些，还是回了家。倒不是说待在家和待在学校本身有多大区别，真正让我感到开心，甚至可以说是有一些“暗自窃喜”的，是拎着大包小包逐渐远离学校的这个过程。除此之外，我进入西交以来，便一直觉得机场是一个能量很高的地方，或者说是可以给人希望的地方，飞行距离越远，越是如此。火车和高铁站虽然也是出发和到达的地方，但由于铁道在物理意义上连接了路途的两端，不论相隔多远，沿着一样的铁路，总能再次相遇，高铁站给人的感受终究是和机场不太一样。&lt;/p&gt;
&lt;p&gt;不过假期已经成为过去式了，五一假期大概还有三周的时间，这三周依旧是有很多事情要去做，还是先尝试着平稳度过吧。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;这两周主要的课余时间用在了借助cursor实现一个简单的CNN识别MNIST上。在这篇周记撰写时，我已经完成了代码的编写、审计和调试，相关的整理和报告大约在几天内可以更新。MNIST识别项目算是深度学习领域的Helloworld了，第一次自主完成这样的项目，还实现了不错的效果，还是很开心的。&lt;/p&gt;
&lt;p&gt;这两周的主要事情便是这些，或许有一些细节，由于过去的时间比较长，已经难以记起了。权且放下过去，过好接下来新的一周吧。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/74001307&lt;/p&gt;</content:encoded><h:img src="/_astro/Week22.DpAODl6w.jpg"/><enclosure url="/_astro/Week22.DpAODl6w.jpg"/></item><item><title>周记 Week21</title><link>https://tian404.top/blog/week21/week21</link><guid isPermaLink="true">https://tian404.top/blog/week21/week21</guid><description>2026-03-16 ~ 2026-03-22.</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在将近半年的自学后，此时此刻的我可以说是具备了开展科研的大部分基础知识了。我认为这还是很值得纪念的一个时刻的。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;这周最值得说的就是完成了Andrew的NLP课程自学。课程的大部分内容之前都有所涉及，多了一些机器学习在NLP中的运用，没有只讲现在更为主流的DL，我觉得作为了解领域的发展历程来说，还是有一定价值的。这门课由于是网络公开课，不是大学课程的录播，所以讲授的内容还是很新手友好的，是不错的NLP入门课程。&lt;/p&gt;
&lt;p&gt;至今，如果不算各种教程、博客文章的教学，只考虑完整的公开课的话，我已经完成了C语言、单变量微积分、多变量微积分、线性代数、概率与随机过程、CV、NLP、DL课程的学习，可以说是具备了比较完整的知识体系，可以进入后续的实践了。&lt;/p&gt;
&lt;p&gt;2025.10.9 - 2026.3.21. 回想这一段短暂的旅程，可以说是所有伟大源于一个勇敢的开始。伟大不一定谈得上，但这一定是一个勇敢的开始。我将提早参与科研或实习作为进一步上升的捷径(相比于无休止的提升课内成绩和德育分而言)，于是开始了自学的道路。如今的我和初入大学的我相比，已经有了很大的变化。最为明显的就是对于很多曾经认为遥不可及，或者说是高高在上的事物怯魅。除此之外还有对于第一性原理的认识加深。路径和价值从来不是深刻绑定的，了解自己深层的需求，并直指本质需求才是解决问题的方法。&lt;/p&gt;
&lt;p&gt;最近恰巧看到了张一鸣过去的微博：常言道，以大多数人努力程度之低根本轮不到拼天赋。他的版本：以大多数人满足感延迟程度之低根本轮不到拼天赋。满足感延迟低的确是阻碍自我迭代的一大障碍，于我本人而言，常常有的想法是：最近已经忙了这么多事情了，是时候开摆一段时间了。然而事实往往是距离上一次这么想，并没有过去甚至半个月的时间。这样的结果就是做事只能坚持一段时间，随后便因自己极低的满足感阈值，恢复成了之前原本的样子。&lt;/p&gt;
&lt;p&gt;话说回来，尽管半年来的自学旅途断断续续，最终也算是完成了目标，还是值得高兴的。在看到半年来的worklist后，我获得了很好的正反馈。Wonderful journey.&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;最近西安的天终于是越来越暖了，学校里很多知道名字的，不知道名字的花都开了，有些甚至已经过了花期。这个时节的兴庆校区是我目前见过风景最好的时候。&lt;/p&gt;
&lt;p&gt;这周的内容大概就是这些，假如有读者的话，希望你能够读的开心。&lt;/p&gt;
&lt;p&gt;In the silence I await.[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/137010221&lt;/p&gt;</content:encoded><h:img src="/_astro/Week21.qB23AApm.jpg"/><enclosure url="/_astro/Week21.qB23AApm.jpg"/></item><item><title>周记 Week20</title><link>https://tian404.top/blog/week20/week20</link><guid isPermaLink="true">https://tian404.top/blog/week20/week20</guid><description>2026-03-09 ~ 2026-03-15.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这周算是过的比较平淡，没有太多值得专门记录的。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;在这周周中时，我已经完成了CS231n的课程学习。整体来讲，这门课因为每学期都在更新，讲的内容基本上涵盖了当下CV领域的各个前沿内容。课程的前期主要讲的是一些基础模型，这部分内容在之前的DL课程中已经听过了，所以再听一遍没有太大的难度。课程的后半段聚焦于各个应用场景，讲述了当下流行的模型架构，亦或是SOTA。基本上课程后期就是一两页PPT涵盖了一篇最新论文的研究成果。因为自己没有事先通读过论文，所以听起来有一定的难度。不过好在最后尽力掌握了基本所有的先进架构的insight，有了大致的思路。倘若以后真的需要研究这方面的东西，不会没有思路，可以找来论文再仔细学习。&lt;/p&gt;
&lt;p&gt;整体上来说，我认为没有基础/预习的人并不适合直接听CS231n，这门课程对于新手并没有那么友好，建议先去听完andrew的DL公开课，有了基础知识后再来听，感受上会好一些。&lt;/p&gt;
&lt;p&gt;后续还有一些关于NLP的入门课程，完成之后，我认为是时候进入下一个阶段了。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;最近看了一些采访，也是有了一些新的思考。很重要的一点就是抛弃学生思维。具体来说，就是假如“我要做c”，正确的思路应该是就去做c，有一种很典型的学生思维是去做自以为是的等价代换。比如，其实是要做c，但我以为做成b就能做成c，而做成b又需要做成a。这样一路等价代换之后，看似获得了一条可行的道路，实则容易南辕北辙。再具体一点，这种思维可以体现为：我想要赚钱，那我就要进大厂；我要进大厂，就需要有好的学历；我要有好的学历，就要读研；我要读研，那我就应该取争取保研；我要争取保研，我就应该好好听课写作业，应该每节课好好去打卡，提升课内成绩。这样的路径不能说有问题，但别人的经验和道路，是在别人的环境下获得的，并不适合自己。价值和路径的强绑定是很容易陷入的误区。真正应该做的，是根据第一性原理，或者可以借鉴一下强化学习的思路，做在线强化学习，而非离线强化学习。不断探索+利用，见到更多的做法和方案，才能通过不断的强化学习，最后找到自己的，而非别人的奖励函数，不断提升自我。不过另一个极端，解构所有的价值也是不可取的。这个领域学术界与工业界当下脱节的情况，注定会让我们需要去走出课内，尝试更多的道路，见到更多的可能性，才能获取到对于自己的最优解。&lt;/p&gt;
&lt;p&gt;最近让我开心的事情是因为130周年校庆，清明节＋校庆一共调出了五天的假期，这种意外之喜希望以后可以多一些。祝西安交大130周年生日快乐。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/139396752#1&lt;/p&gt;</content:encoded><h:img src="/_astro/Week20.BDvPkgOx.jpg"/><enclosure url="/_astro/Week20.BDvPkgOx.jpg"/></item><item><title>周记 Week19</title><link>https://tian404.top/blog/week19/week19</link><guid isPermaLink="true">https://tian404.top/blog/week19/week19</guid><description>2026-03-02 ~ 2026-03-08.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;开学的第一周，一切的进展都比较顺利。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;DL的通识性课程学完之后，本来按照原计划，是可以直接告别集中自学课程的阶段，迈入下一个阶段的，但综合考虑后，还是决定分别过完一遍CV与NLP两个方面的基础课程。这周开始着手CS231n课程的学习。其实CS231n的内容有很多都是DL通识课程里已经涉及的，但由于视频是25年春季学期的，所以有很多比较新的算法，但整体上的思路还是没有太大的区别。预计下周周中可以完成这部分的学习。&lt;/p&gt;
&lt;p&gt;这周也是学期的第一周，在一些课上新认识了我们学院的一些老师。其中任老师、周老师和汪老师三人都给我留下了很深的印象。基本上给我的第一印象都是对于本科教学的重视，至于更深入的了解和评价，我认为等到学期开始一段时间后再给出评价更加合理。现在回过头来想想，西交入学以来遇到的老师基本都是很重视授课的，很大程度改善了我之前对于大学老师不善于本科授课的刻板印象。我觉得也有一部分的原因是我们这个专业分配的老师本身普遍都是各个学科组里比较有实力的，还是非常幸运的。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;这周F1的2026赛季终于迎来了揭幕战，梅奔久违的领跑了积分榜，同时也恭喜拉塞尔夺得新规则时代的第一站冠军，恭喜梅奔一二带回。就这周末来看法拉利和红牛的车也是很有实力的，希望梅奔能够在2026收获WCC和WDC。我所喜欢的，一直是那一支追求极致完美的梅奔。[^1]&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Best or Nothing. --Mercedes Benz&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/130019397&lt;/p&gt;</content:encoded><h:img src="/_astro/Week19.B-bnEsZp.jpg"/><enclosure url="/_astro/Week19.B-bnEsZp.jpg"/></item><item><title>周记 Week18</title><link>https://tian404.top/blog/week18/week18</link><guid isPermaLink="true">https://tian404.top/blog/week18/week18</guid><description>2026-02-16 ~ 2026-03-01.</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;不知不觉间寒假已经快要结束了，明天就是开学第一天了。我觉得这是一个很好的时间，总结一下最近的事情，准备新的一学期。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;最近尽可能抽出了足够的时间，集中完成了由Andrew Y. Ng授课的DeepLearning课程学习。完成的时间的确比预期的时间晚了很多。原先计划是在上学期空闲的期末复习周学完，后面又计划利用校赛和美赛之间大约一周的空余时间学习，最后真正完成该课程的时间却是第二学期开学的前夜。至于拖延的原因，更多还是没能找到上学期初那种拼劲。根据我的观察，我能够做多少事情，一方面取决于自己是否能够进入一种“心流”状态，完全专注于事情上，另一方面取决于必须完成的事务的多少。很简单的例子是，假如处于放假状态，没有什么必须完成的事，往往我也难以自己做成一些事情，但倘若处于学期中，每周都有固定的课程、作业的硬性任务需要完成，这种时候，我反而能够在完成硬性任务的同时额外做好很多自己安排的事情，过得更加充实。这样的现象还是挺有意思的。&lt;/p&gt;
&lt;p&gt;关于该课程的内容，我认为这是非常好的入门DL的课程。这门课最直观的体验就是，他在假定观众是0基础的情况下，将DL中涉及的应用领域、基本模型架构与算法、常见的实际工程问题和经验讲述了出来，能够让我以最短的方式快速了解不同的DL研究领域和基本原理。我认为这门课是能够为我后续的学习扫清很多知识性、思维性的障碍的。如果有人让我推荐AI专业的自学课程，这门课一定会在我的推荐名单中。&lt;/p&gt;
&lt;p&gt;在返校的那天，上学期的四级考试正好出分了。结果在一定程度上超出了我的预期，算是高分通过了。可能更多还是因为高中阶段学校对英语的重视让我能够吃老本。不过后面的六级和其他英语考试或许就没有那么容易了，第二学期依旧需要花一定额外时间提升英语。&lt;/p&gt;
&lt;h2&gt;假期&lt;/h2&gt;
&lt;p&gt;正如前文所言，寒假回家后原本计划了很多事务，最后做到的却几乎没有，值得拿出来说的更是不多。值得记录的事情之一应该是拿第一学期得到的奖学金 (其实是吃高中老本拿的，并非泥交发的) 分别给爸妈买了礼物，一个剃须刀和一块智能手表，还请了一顿饭。这大抵是我第一次用自己的劳动所得 (智力劳动) 给父母买东西。根据我的观察，爸妈还是很开心能收到礼物的，符合我的预期，毕竟这两份礼物是我长期思考后的结果，并非随便选择的物品。&lt;/p&gt;
&lt;p&gt;假期剩下的大多时间，要么是在校备赛，要么是在路途上奔波，亦或是在家中躺平，没有什么特殊的事情。前几天在整理返校带的行李时，我反倒是已经开始规划起了五一什么时候回，怎么回家。距离五一也只有八周多的时间，还是很快能够再次回家的。&lt;/p&gt;
&lt;h2&gt;新学期&lt;/h2&gt;
&lt;p&gt;对于新学期，我唯一的感觉就是难办。之前听闻大一下和大二上会是课内压力最大的两个学期，现在仔细看了看课表，的确如此。&lt;/p&gt;
&lt;p&gt;这学期有三门数学类课程，且都是高学分课。上学期虽说也有两门数学课，但其中的线代由于提早自学，以及学科特性 (理解本质后，即使不刷题，不大量训练也能获得不错的结果)，在上学期的后半段时间中，我几乎没有在线代上花费什么精力。而这学期的高数、概率论、离散数学可以说是困难重重，暂时先尽可能完成课堂与作业，再从长计议吧。计算机相关的数据结构更是久仰大名，对于我这种大学前几乎没有编程基础的只会比上学期的课程更难处理。外语课又因为我当初想要挑战自我，或者说是既要有要的心态，选择了托福强化的课程，提早为未来可能的选择铺路。简而言之，这学期的数学、外语、计算机课都是艰巨的挑战，希望可以安稳度过。&lt;/p&gt;
&lt;p&gt;明天就要开学了，对于新学期，我还是有不少期望的，在这里罗列几个基础的方向，希望能够达成：耐力和力量方面的运动和锻炼；减少每周网络游戏的时间，将精力转移到自学上，或者是那些能够体现游戏作为第九艺术的高质量作品上；健康饮食，早睡早起。&lt;/p&gt;
&lt;p&gt;寒假总体而言是充实的，新学期虽然挑战重重，但也值得期待，一切都会好起来的。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/123040313&lt;/p&gt;</content:encoded><h:img src="/_astro/Week18.ob6BDZaT.jpg"/><enclosure url="/_astro/Week18.ob6BDZaT.jpg"/></item><item><title>周记 Week17</title><link>https://tian404.top/blog/week17/week17</link><guid isPermaLink="true">https://tian404.top/blog/week17/week17</guid><description>2026-02-08 ~ 2026-02-15.</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这一周下来做的事情还算是比较多的，值得记录一下。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;值得高兴的是，这周开始我已经重拾了许久没有学习的DL课程，重新开始了自主学习的过程。开始学习新事物的体验依旧是那样令人兴奋和充满能量，和前段时间枯燥无味的期末复习形成了鲜明的对比。不过这周自学的量依旧算是比较少，和之前学期中状态最优的时候难以相提并论。不过能够从一段时间的躺平中缓过神来，开始有所作为，我认为这是极好的。如此看来，下周大概是能有更高的效率。不过寒假已经接近尾声，还是希望开学前可以至少完成DL的课程学习。&lt;/p&gt;
&lt;h2&gt;相聚&lt;/h2&gt;
&lt;p&gt;这次回到上海，终于是有机会和高中的同学和朋友线下聚一聚，其中也包括和一些长期熟悉且有线上交流的朋友第一次在线下出去吃饭。对于我本人而言，大多数时候的确会更偏向于线上交流，能够有充足的时间去组织言语，没有实时反馈的压力，也能避免一些眼神与肢体交流。面对面与人交流这件事，我还是深感压力的，但倘若是和关系比较好，或者说比较熟悉的人能够有线下的相聚机会，到最后一般都算是很愉悦的一段经历。出去做什么并非是主要的，重要的是跟谁出去。总之，期待以后假期可以有机会继续和朋友相聚。或许的确有一些会渐渐走散，但我还是希望长久的联结可以多一些。&lt;/p&gt;
&lt;h2&gt;春节&lt;/h2&gt;
&lt;p&gt;在经历了长时间的高速驾驶后，今天终于到达了江西的老家。其实我更愿意称其为“老老家”，因为这并非是我成长的地方。随着进入大学，我发现似乎我对于过年回乡下已经不再有小时候的那种热情了，取而代之的是一种认为在路上浪费时间和精力的负面情绪。或许以后可以考虑换一些效率更高的方式回去，将其视为换一个地方继续完成自己的事务，可以减少一些这种不好的情绪。春节这一周注定是有不少精力耗费在路上的，但愿能够保持愉悦的心情，迎接新的一年。&lt;/p&gt;
&lt;p&gt;这周能够记录的内容大抵也就是这些了。虽然换了地方，但周记依然按时更新了，我对此是很满意的。预祝新年快乐。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/139521816&lt;/p&gt;</content:encoded><h:img src="/_astro/Week17.DKoLO8HL.jpg"/><enclosure url="/_astro/Week17.DKoLO8HL.jpg"/></item><item><title>周记 Week16</title><link>https://tian404.top/blog/week16/week16</link><guid isPermaLink="true">https://tian404.top/blog/week16/week16</guid><description>2026-01-26 ~ 2026-02-08.</description><pubDate>Sun, 08 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近算是结束了学校里要忙的事情，回到了老家，开始享受大学阶段的第一次假期。这么多年来第一次在一学期的学习后迎来一个没有作业的寒假，还是有些不太适应的。不过相比于过去寒假成堆的作业，我还是更愿意拥抱当下似乎更加轻松的真正的假期。&lt;/p&gt;
&lt;h2&gt;美赛&lt;/h2&gt;
&lt;p&gt;这段时间放假了却一直没有回家的主要原因就是在准备美赛的相关事宜。整体上来说，美赛我们队伍的流程与校赛比较相似，并没有做太多的调整。我本人依旧承担了大部分的比赛工作。整体上来说，我们队伍能够按时交出一份合格的文章成果，且过程中没有发生什么不愉快的事情，我觉得已经算是做的很好了。关于过程方面，使用的工具流和校赛的时候基本相同，没有太多的变化。硬要说变化可能就是对于下一步要做什么，以及具体该怎么做更加熟悉。&lt;/p&gt;
&lt;p&gt;比赛的结果还得等待大约三个月的时间。整个比赛过程我本人还是积累了一些关于科研流程的经验的，尤其是文章撰写的相关技能，应该对于后续的工作能有不少帮助。&lt;/p&gt;
&lt;h2&gt;校园&lt;/h2&gt;
&lt;p&gt;这段时间留校，也算是体会到了假期学校和平时的不同。最明显的感受就是假期食堂关闭了绝大多数的窗口，使得我更加有信心可以说麦当劳是全兴庆校区最好吃的店。不过大部分档口的关闭也让我发现了梧桐三楼自选餐厅的菜貌似相比之下肉的量更足，以后也是一个不错的选择。&lt;/p&gt;
&lt;p&gt;假期校园里几乎每天都会刷新家长带着小孩参观和拍照的NPC情景，或许这也是某种意义上的围城。&lt;/p&gt;
&lt;h2&gt;闲谈&lt;/h2&gt;
&lt;p&gt;到此为止，从期末周开始的复习、考试、竞赛任务可以说是全部结束了，终于可以好好休息一段时间了，估计这也会是大学最后一个可以好好休息的长假期。美赛期间第一学期的所有考试成绩都出了，整体而言还是比较满意的，几个靠背诵的科目或许是因为确实下了不少功夫，是十门课里分比较高的几个，最后的均分也是稳住了90的预期线。下学期的数学课比较多，到时候可能得针对自己的弱项多花点功夫，不然分数比较难以平衡。&lt;/p&gt;
&lt;p&gt;寒假还有大约三周的时间，本来想做的事情有很多，但最终还是决定给自己放个假。改改博客的网站，稍微学一些DL的相关知识，和以前高中的朋友聚一聚，都是不错的选择。&lt;/p&gt;
&lt;p&gt;第一学期，完结撒花。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/126591726&lt;/p&gt;</content:encoded><h:img src="/_astro/Week16.DWJI6Z6J.jpg"/><enclosure url="/_astro/Week16.DWJI6Z6J.jpg"/></item><item><title>周记 Week15</title><link>https://tian404.top/blog/week15/week15</link><guid isPermaLink="true">https://tian404.top/blog/week15/week15</guid><description>2026-01-12 ~ 2026-01-25.</description><pubDate>Sun, 25 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这周的周记算是迟到了，主要还是因为上周有很多时间用于校赛的工作，最终没能抽出时间完成一次记录。那么这次的周记就统一记录以下两周以来发生的事情吧。&lt;/p&gt;
&lt;h2&gt;考试&lt;/h2&gt;
&lt;p&gt;显而易见，截至本篇文章撰写的时刻，我已经完成了大学阶段第一学期的所有学习内容，包括期末考试。总体而言感觉复习时间还是比较充裕的，但是时间多起来之后倒也不见得效率变高了多少。从最终的结果来看，除了目前还没有出成绩的一门国防，剩下的课程不论是专业课、通识课还是思政课，整体上分数还是比较满意的。不过不得不提数学这一长久以来对我都是老大难的问题。最后高数的成绩只能说可以接受，不算差，但是下学期的高数还是有很多值得提升的内容的，尤其是一些公式理解和解题技巧方面。从下学期的课来看，数学类课的学分达到了将近15分的数量级，这个占比还是很大的。接下来寒假自学的内容大抵是得花更多精力在相关内容上了。&lt;/p&gt;
&lt;p&gt;总体而言，这算是一次比较满意的期末周经历。希望后面的期末周可以有更好的安排和调整。&lt;/p&gt;
&lt;h2&gt;校赛&lt;/h2&gt;
&lt;p&gt;由于是第一次参加美赛，出于练习和熟悉过程的考虑，我便带着我们的队伍参加了这次的数模校赛。整体上看还是依靠这次校赛熟悉了整体的过程，有了不错的收获。&lt;/p&gt;
&lt;p&gt;过程中比较离谱的部分在于，往往依靠着从官方渠道收集到的真实数据，得到了一些非常离谱和违反常理的结论或仿真结果。后面总结下来，大概是因为模型选择和参变量选择的原因，参变量间的共线性是一大影响因素。后续美赛的时候，这一点经验是可以吸取的。&lt;/p&gt;
&lt;p&gt;不过由于分工的问题，我也是有幸体验了一次近乎独狼式工作的过程。这么讲或许有些夸张，不过我个人的确可以说是完成了团队的大部分关键工作。这么看来，官网上那句&quot;In the eyes of COMAP and the contest directors, all team members are equal. &quot;确实就显得有些理想主义色彩了。关于工作分配的内容我并不想在这里做过多的评价，于我而言，此次参加数模比赛的目的在于熟悉过程，积累能力。并且由于美赛的整体过程与科研有一定的相似之处，包括思维逻辑与工具使用。所以我个人承担更多的工作，其实也是和我的目的相符的，也就不再多说什么了。后面过几天就是美赛了，到时候应该能形成更加合理的工作流程。&lt;/p&gt;
&lt;h2&gt;杂事若干&lt;/h2&gt;
&lt;p&gt;虽然说这两周更多的时间用在了比赛和考试上，但除此之外依旧是有一些值得记录的内容。这段时间温度逐渐降下来了，再加上寒潮的缘故，西安最近终于是下了几次雪。可以说是有生之年见到过的比较大的雪了，这在南方是几乎没有过的体验。正好由于这次寒潮比较强，老家那边也是难得下了小雪，朋友圈一度被这样的内容刷屏。不过和西安的雪比起来，确实还是逊色了不少。&lt;/p&gt;
&lt;p&gt;由于校赛和美赛的缘故，我选择了放假后留校一段时间。于是经常见到的场景便是我提着食堂的饭回宿舍，看着别人拎着箱子和大包小包往校门外走。最近随着接近过年，食堂基本上只保留了极低水平的营业量。感觉是时候多去校门外寻找一些当地的美食了。&lt;/p&gt;
&lt;p&gt;下周末的时间应该已经在忙美赛的相关内容了，周记大抵是会迟到或是缺席一次。希望后面的美赛可以顺利。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/139340363&lt;/p&gt;</content:encoded><h:img src="/_astro/Week15.BGlxhoiu.jpg"/><enclosure url="/_astro/Week15.BGlxhoiu.jpg"/></item><item><title>周记 Week14</title><link>https://tian404.top/blog/week14/week14</link><guid isPermaLink="true">https://tian404.top/blog/week14/week14</guid><description>2026-01-05 ~ 2026-01-11.</description><pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这周主要是考试周，并没有太多值得记录的，就简单的谈一谈考试吧。&lt;/p&gt;
&lt;p&gt;首先是思修结课考试。由于缺少往年试题，导致复习的时候复习的过于细致。现在考完之后看下来，其实只要把课上反复强调过的内容、章节的标题和小标题以及段落的总起句背诵熟练即可，尤其是注意不要背串。我考试的时候简答题就背串了答案，导致可能会失分。不过话说回来，如果当初没有背得那么详细，或许可能反而不容易记错。总而言之，对于思修这门课而言，背过书本，考完试就可以放下了，也没有什么别的多说的。于我而言，我对于思修类课程最好的记忆依旧是停留在初中阶段的道德与法治课程上。&lt;/p&gt;
&lt;p&gt;其次就是工科数学分析的期末考了。西交的工数堪比别家的两门数学课：高等数学与微分方程。很可惜的是，考试的时候在面对高阶非齐次线性微分方程时，我再一次背串了公式。我能够清晰的感受到这张卷子难度比期中考试低，但最后还是因为自己的原因，目前看下来可能分数不会太高。&lt;/p&gt;
&lt;p&gt;至于为什么多次出现背串的问题呢，可能主要还是近期状态的问题。下周还有线性代数和国防教育两门考试。线代于我而言还是有不错的基础的，希望可以好好发挥，把工数的坑稍微填上一点。&lt;/p&gt;
&lt;p&gt;这周主要的时间都用来考试和复习了，预计下周也会是这样。希望期末周大家都能获得理想的结果。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/137858962&lt;/p&gt;</content:encoded><h:img src="/_astro/Week14.D_HvigzM.jpg"/><enclosure url="/_astro/Week14.D_HvigzM.jpg"/></item><item><title>周记 Week13</title><link>https://tian404.top/blog/week13/week13</link><guid isPermaLink="true">https://tian404.top/blog/week13/week13</guid><description>2025-12-29 ~ 2026-01-04.</description><pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;新年快乐！&lt;/p&gt;
&lt;h2&gt;近况&lt;/h2&gt;
&lt;p&gt;这一周没有课，主要精力都放在了复习上，可能也没有太多可以写的，但还是简单总结一下。&lt;/p&gt;
&lt;p&gt;首先来看看上周定下目标的完成情况。复习方面，已经完成了有期末考试的四门课的课本内容复习和记忆唤醒，这部分的目标算是圆满完成了，接下来就是在每门考试的前几天尽可能多的做相关题目和总结了。Deep Learning学习方面，只完成了所有内容的25%左右。主要还是因为前段时间闲下来之后有一些躺平，这周不少时间用来逐渐找回状态。好消息是，目前的状态相较于一周之前，已经有了很大的改善。长跑运动，这周有一半多的时间在下雪，确实也没有办法完成。&lt;/p&gt;
&lt;p&gt;在考试周之前，第八周结课的 &lt;em&gt;程序设计基础&lt;/em&gt; 课程的成绩也出来了。整体上大家的成绩较往届有所上升，但自己的成绩只能说勉强说得过去。主要的原因在之前的周记里面也提到了，机试准备阶段忽视了一些细节问题，导致机试时候心态出了问题，没有做得太好。比较可惜的是距离90分差了一点点，至今还是没能收获进入西交后的第一个90+成绩。&lt;/p&gt;
&lt;p&gt;以上就是最近一周能回忆起来的主要内容了，总体而言，一切都在往好的方向发展。&lt;/p&gt;
&lt;h2&gt;ROT 13&lt;/h2&gt;
&lt;p&gt;ROT 13，全称rotate by 13 places，是凯撒密码的一种变体。提到这个主要是因为最近在无意中找到了 &lt;em&gt;The Zen of Python&lt;/em&gt; 的源代码。与我所预想的简单的输出一段文字不同，该源代码使用了ROT-13进行加密，使我第一眼看到源码内容时还有些看不懂。后面进行了一些学习，发现ROT-13其实是一种凯撒密码的变体，他的基本加密思路是把大小写字母替换为他们在字母表上13位后的对应字母，超出26的范围则绕回开头的字母a/A继续计算即可。这个算法的巧妙之处在于由于13是26的一半，因而加密与解密使用的算法是一样的。&lt;/p&gt;
&lt;p&gt;该加密方法以前主要是用于英文网络论坛来隐藏一些不便于直接展示的文字，比如脏话、妙语等，逃过管理员的简单审查。这样的历史还是挺有趣的。&lt;/p&gt;
&lt;p&gt;后来也是突发奇想，直接采用了该源代码的内容，写了一段新年祝福发送给若干好友，这里将代码记录下来，留作纪念，也希望大家能够在新的一年里得偿所愿。值得一提的是，为了保持原有 &lt;em&gt;The Zen of Python&lt;/em&gt; 的形式，这里采用模块化的思想，将代码分为了两个文件，并且最终通过类似于import this的方式执行代码。&lt;/p&gt;
&lt;p&gt;加密和解密的思路大体上是先构建了明文和密文的对应关系的字典d，然后利用字典，对于密文进行翻译。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# FileName: HappyNewYear.py
s = &quot;&quot;&quot;Unccl Arj Lrne, ol Gvna

Vs lbh frr gurfr jbeqf fhpprffshyyl, pbatenghyngvbaf, jung lbh ner ivrjvat vf gur erfhyg bs EBG13 qrpelcgvba.
Un, vg vf whfg n yvggyr gevpx juvpu fvzcyl hfrf gur fnzr nytbevguz nf Clguba&apos;f snzbhf guvf zbqhyr (Mra bs Clguba).
V ubcr lbh yvxr guvf gevpx.

Bbcf, V arneyl oynaxrq ba jung V jnf tbaan gb fnl bevtvanyyl.
Unccl Arj Lrne 2026!
Jvfuvat lbh tbbq urnygu naq qernzf shysvyyrq.
Nobir nyy, fgnl cher --- vg&apos;f ernyyl vzcbegnag naq cerpvbhf.
Jung jr xabj nf TBNG ner nyjnlf crbcyr bs nofbyhgr chevgl.
Lbh pna frr guvf va fcbegf, yvxr fbppre, naq vg nccyvrf gb bgure svryqf, gbb.

Gurfr ner whfg fbzr gubhtugf V&apos;ir unq erpragyl.
V qba&apos;g jnag gb ynl ba gbb zhpu jvfqbz gbqnl.
Yrg&apos;f jevgr qbja bhe jvfurf sbe 2026, naq purpx jurgure gurl&apos;yy pbzr gehr va gur raq bs 2026.

Unccl Arj Lrne!&quot;&quot;&quot;

d = {}
for c in (65, 97):
    for i in range(26):
        d[chr(i+c)] = chr((i+13) % 26 + c)

print(&quot;&quot;.join([d.get(c, c) for c in s]))
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# FileName:2026.py
import HappyNewYear
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上是源代码，程序运行后的内容如下，也算是我的一些新年祝福了。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Happy New Year, by Tian&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you see these words successfully, congratulations, what you are viewing is the result of ROT13 decryption.
Ha, it is just a little trick which simply uses the same algorithm as Python&apos;s famous this module (Zen of Python).
I hope you like this trick.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Oops, I nearly blanked on what I was gonna to say originally.
Happy New Year 2026!
Wishing you good health and dreams fulfilled.
Above all, stay pure --- it&apos;s really important and precious.
What we know as GOAT are always people of absolute purity.
You can see this in sports, like soccer, and it applies to other fields, too.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;These are just some thoughts I&apos;ve had recently.
I don&apos;t want to lay on too much wisdom today.
Let&apos;s write down our wishes for 2026, and check whether they&apos;ll come true in the end of 2026.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Happy New Year!&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;关于2026&lt;/h2&gt;
&lt;p&gt;我预想中的2026年，还是会发生很多重要的事情的。不妨在一年刚开始的时候，写下一些希望达成的目标，一年之后，看看能否实现。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完成人工智能基本必要知识体系的自学&lt;/li&gt;
&lt;li&gt;阅读50篇相关论文&lt;/li&gt;
&lt;li&gt;加入浙大相关课题组，开始科研训练&lt;/li&gt;
&lt;li&gt;每天学习非当前本科课程内容至少四小时&lt;/li&gt;
&lt;li&gt;坚持每周写周记&lt;/li&gt;
&lt;li&gt;了解并参与更多开源项目，完善个人博客网站&lt;/li&gt;
&lt;li&gt;综测成绩进入学院前20%，获得大学奖学金&lt;/li&gt;
&lt;li&gt;每周跑步至少两次，单次距离大于一公里&lt;/li&gt;
&lt;li&gt;交到大学阶段的第一个真正的朋友&lt;/li&gt;
&lt;li&gt;做一个纯粹的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上大致就是能够想到的全部内容了，希望到了今年结束时，回过头看，能有一个好的结果。&lt;/p&gt;
&lt;p&gt;总而言之，最近还是在慢慢调整状态的过程中。下周开始就是考试周了，愿一切顺利。祝大家新年快乐，身体健康，得偿所愿。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/139487059&lt;/p&gt;</content:encoded><h:img src="/_astro/Week13.7ptgTUGA.jpg"/><enclosure url="/_astro/Week13.7ptgTUGA.jpg"/></item><item><title>周记 Week12</title><link>https://tian404.top/blog/week12/week12</link><guid isPermaLink="true">https://tian404.top/blog/week12/week12</guid><description>2025-12-22 ~ 2025-12-28.</description><pubDate>Sun, 28 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2025最后一次周记。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;这一周是这学期最后一周教学周，一些没有期末考试的课程在这周也进行了一些收尾工作。总而言之，这周的主要精力还是花在了课内学习上。此外，这周也利用课余时间，对于Deep Learning的课程开了一个头。以上大抵就是这周的主要完成的工作了。&lt;/p&gt;
&lt;p&gt;一学期的课听下来，工数的王勇茂老师的确是极具个人风格的一位老师，知识点讲解清晰，详略得当。现在回过头想想，中间有一段时间因为部分内容掌握得不好，听课效果有一些差，还是比较可惜的。不过好在下学期的工数老师依旧是王老师，希望下学期的工数可以有更好的结果。&lt;/p&gt;
&lt;p&gt;接下来一周的主要精力应当就是复习期末考试了。毕竟是大学以来的第一次期末考试，我想还是以一个正常的心态和节奏去应对，看看再正常情况下自己的水平如何，以便作出后续的调整和决策。当然这一周完全没有课程的时间，完全用来复习的话，我也深知效率不会高，因此也决定抽空完成适当的长跑运动以及Deep Learning课程的学习，预计至少完成全部课程的一半进度。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;周六的时候校友会出资办了一次无人机表演，庆祝母校西交即将到来的130周年校庆，也祝福师生新年快乐。仔细想想这应该是我第一次在现实中看到无人机表演。与手机、相机拍摄出来的照片视频相比，现场的确要震撼很多。算是在西交又留下了一次美好的回忆。&lt;/p&gt;
&lt;p&gt;年终将至，希望来年也能一切顺利，加油[^1]。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/109399871#1&lt;/p&gt;</content:encoded><h:img src="/_astro/Week12.C7X8s7WX.jpg"/><enclosure url="/_astro/Week12.C7X8s7WX.jpg"/></item><item><title>周记 Week11</title><link>https://tian404.top/blog/week11/week11</link><guid isPermaLink="true">https://tian404.top/blog/week11/week11</guid><description>2025-12-15 ~ 2025-12-21.</description><pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这周的周记暂且抛下以前固定的格式，尝试以一种自然的叙述方式总结一下这一周的工作。&lt;/p&gt;
&lt;p&gt;这已经是本学期的第15周了，下周结束，本学期所有的教学任务也就结束了。因此最近也是逐渐进入了期末的状态。话是这么说，但我并没有打算这么早开始复习，而是花了点时间处理了一些之前拖着没有完成的内容。&lt;/p&gt;
&lt;p&gt;最值得一说的就是这周终于是完成了《乔布斯传》的阅读。提到这本书，也确实是惭愧。曾经我在并不是非常了解乔帮主的情况下，将其视为自身的榜样之一。当时还在高中时，每学期返宿的一件事便是把家里那本《乔布斯传》从家中搬到学校宿舍的书架上，试图利用空闲的时间看完。结果如何呢？空闲时间的话，即便高中大多数时间奉献给了课业，但的确还是有不少闲暇时光的。只是这些时间多半奉献给了睡觉、踢球打球之类的活动。于是乎，直到高中结束，这本书我也才看完了四十多章的前面几章。后面由于还是希望能够细致的了解一下乔帮主，最终决定把这本书带到了远在西安的宿舍中。从结果上看，确实是把这本书看完了，相较于以前，执行力还是有进步的。&lt;/p&gt;
&lt;p&gt;其实，在看完整本书后，我发现乔帮主并没有先前我设想的那么神乎其神。可以说他的厉害之处就在于能够在几乎没有发明新的技术的情况下，极大的改变了人们的生活。在理念上，他强调艺术家与工程师之间存在相似性，追求极致的简洁。在为人处世上，他所强调将事务进行优先级的划分，把有限的专注力毫无保留的投入到最关键的事情上。他所期待的是能够创立一家传世的公司，留下公司的文化，用自己的方式表达对前人贡献的感激。公司内，人们在乔布斯“现实扭曲力场(Reality Distortion Field)”的影响下，以“诚实到残酷”的方式进行思想碰撞，最终得以改变了个人电脑、动画电影、音乐、移动电话、平板电脑和数字出版六大领域。于我而言，印象最深的应该还是乔帮主对于科技与人文艺术交汇的推崇。好的产品与理念必然拥有简洁的艺术气质。在阅读完全书后，如果要我用一句话总结，我会选择乔布斯在Stanford毕业典礼上演讲的一句话：Keep looking, don&apos;t settle.&lt;/p&gt;
&lt;p&gt;前几天偶然之间从舍友口中获取到了一些对自己的评价。据他所言，我早上的起床时间不是很早就是很晚，往往不会在中间起来。这确实，是我的常态。因为往往当我被闹钟叫醒但不想起，想再睡一会儿的时候，占据我脑子的想法会是“既然已经不是那么早了，那不如今天休息一下”。这样固然无可厚非，但仔细想想，这其实正是上周周记中提到的“Saturday morning problem”问题的体现。或许起的晚了，确实没法像早起那样做那么多事，但如果及时止损，长期积累下来，那也是能够获得不小的进步的。事实证明，反思总结起到了作用，这周日，我能够比往常周日更早的起床，也完成了更多的学习内容。&lt;/p&gt;
&lt;p&gt;其他的或许也就没有什么了，这一篇周记的主角是乔帮主，我想既然如此，那就引用Apple公司Think Different广告中的一句话，作为结尾吧[^1]：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The people who are crazy enough to think they can change the world, are the ones who do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image:https://www.pixiv.net/artworks/39012946&lt;/p&gt;</content:encoded><h:img src="/_astro/Week11.D-G_9kUM.jpg"/><enclosure url="/_astro/Week11.D-G_9kUM.jpg"/></item><item><title>周记 Week10</title><link>https://tian404.top/blog/week10/week10</link><guid isPermaLink="true">https://tian404.top/blog/week10/week10</guid><description>2025-12-08 ~ 2025-12-14.</description><pubDate>Sun, 14 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;近期的忙碌也终于是在这周画上了一个句号，很高兴接下来可以获得几周能够更多的自由支配的时间。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;在考试上，这周主要就是结束了四级的考试。不得不承认，虽然其他学科，尤其是理科，在来到西交的优质生源班级后确实感受到了一定的差距(迟早能攻守之势异也)，但是英语确实是高中阶段由于地域原因，打下的基础比较牢固，让我获得了一定的优势。四级整体的确没有秋考的试卷难，更别提当时更为震撼的春考卷了，因此即使是将近一年没有系统性的学习英语应试知识后，还是能够比较好的应对四级考试。&lt;/p&gt;
&lt;p&gt;在自主学习方面，最近主要把精力花在了计算机基础知识的补全上。利用网络资源基本入门了Python语言，加上之前课内+自学掌握的C与CPP，我想这些已经足够我进行下一步的探索了。同时也花了一些时间，阅读了 &lt;a href=&quot;https://www.criwits.top/missing/&quot;&gt;你缺失的那门计算机课&lt;/a&gt; 的内容。总体上来说，可以当作科普内容进行了解，还是比较有趣的。尤其是作者用浅显易懂的方式讲述知识，对于新手非常友好，的确值得推荐。&lt;/p&gt;
&lt;p&gt;对于终于能够有更多时间去研究自己喜欢的内容，我还是比较兴奋的。最近也是常常陷入自我怀疑，往往质疑自己当初做出的选择是否正确。可是当我最近配置Anaconda/Miniconda时，我依旧能够感受到那种由内而外的，对于计算机这片未知世界的种种可能性的激动，心中的怀疑便也随之消散了。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;这周足球课上进行了技能考核，点球点射门五个全部达标。不是什么大事，但还是和那些与我相隔千里的高中朋友们进行了一番吹嘘。期待寒假回家后能够展示我足球技术的进步。&lt;/p&gt;
&lt;p&gt;最近西安的气温慢慢降了下来，流感也比较严重，还是要注意保暖，保持身体健康。&lt;/p&gt;
&lt;p&gt;前几天在朋友的推荐下，观看了一些Prof. Andrew Y. Ng对于论文阅读、学习、个人发展的建议。总的来说，和其他优秀的人给出的建议大致是相通的。其中我觉得值得记录的是Saturday Morning Problem。大致讲的是，每个人的周六早晨，可以选择做的事情有很多。如果你选择在周六早晨工作、学习、做研究，可能并不会对你在下周一时的能力有太大的帮助，并且你在周六早晨做的事情，也不会像在工作日一样，被别人看到，不会有人因此来夸奖你。但如果能够长期坚持星期六早晨的学习与工作，积少成多，最终也能够有所进步。我想这是长期主义的一个例子。我是非常认同这一观点的，希望后续也能付诸实践。&lt;/p&gt;
&lt;p&gt;此时此刻，窗外，暮色四合。我想，是时候结束这一周的忙碌了。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/103784301&lt;/p&gt;</content:encoded><h:img src="/_astro/Week10.CiAm_fgM.jpg"/><enclosure url="/_astro/Week10.CiAm_fgM.jpg"/></item><item><title>周记 Week9</title><link>https://tian404.top/blog/week9/week9</link><guid isPermaLink="true">https://tian404.top/blog/week9/week9</guid><description>2025-12-01 ~ 2025-12-07.</description><pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天上午刚刚结束了程序设计的机试，下午也是想着给自己一个调整的周期，适时的总结一下，那么就奖励自己写一篇周记吧。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;基本课程的自学结束也使得最近没有那么紧张，这周的主要精力也是用在了程序设计的笔试与机试上。考下来感觉比较一般，主要还是当下独立思考能力的欠缺。原本上考场前，我本以为机试将会是得心应手的，但是结果却不是我所想的这样。主要问题倒也并非出在基本知识上，只是有一些细节的问题，在脱离网络进行学习的情况下，还是缺少了适当的考虑。此处将我遇到的几大问题进行罗列，倘若有后人有幸看到，希望不要犯相似的问题。&lt;/p&gt;
&lt;p&gt;请在只使用iostream头文件的前提下，实现以下功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;判断用户的输入内容是否符合要求的输入类型/格式，若不符，输出“格式错误”&lt;/li&gt;
&lt;li&gt;保证字符串输入的读取可以读取空格&lt;/li&gt;
&lt;li&gt;完成长度为＜200的某未知整数的字符串读取、拷贝、输出等操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多时候正是这种小的细节使得考试结果不理想。不过这样的内容倒也不影响整体的编程思维培养，在课程结束后，可以利用网络和工具资源进行自学的情况下，这些问题都是比较好解决的。&lt;/p&gt;
&lt;p&gt;或许还有一些关于考试感想可以分享，并不是和学习直接相关的，更多还是选择的问题。在近期的多次考试中，我常常看到身边的同学存在作弊行为。的确，理性思考下，当下的考试环境，作弊成本是比较低的。并非是说作弊被发现的处罚力度不够，而是大多数作弊难以被发现，于是更不可能作出进一步处理。在我看来，这种事情也没有绝对的对错，只是个人选择的区别。正如诗人北岛所言：卑鄙是卑鄙者的通行证，高尚是高尚者的墓志铭。于我个人而言，我并不是特别在意身边的这些同学，我还是希望能够把更多的精力放在提升自己的能力上。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;哈，最近一直都忙于学习和考试，着实是没有什么生活(这话怎么感觉说了很久)。这周和舍友联机一起通关了一次原版mc(在各种指令的辅助下)，不得不说mc这游戏属于是看别人玩简单，自己玩起来则是另一番境遇的类型，不过也有可能因为是平时看的人水平过高，导致我觉得简单，或许这反而更能体现他们的水平和技术。&lt;/p&gt;
&lt;p&gt;现在时间尚早，看看等下能不能出学校逛一逛，正好舒缓一下上午考试失利的悲伤情绪。来西安半学期多了，却还没怎么出校门逛过，还是比较可惜的。&lt;/p&gt;
&lt;p&gt;愿正在看的你能够有美好的一天。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/138084571&lt;/p&gt;</content:encoded><h:img src="/_astro/Week9.DvJEDBWZ.jpg"/><enclosure url="/_astro/Week9.DvJEDBWZ.jpg"/></item><item><title>周记 Week8</title><link>https://tian404.top/blog/week8/week8</link><guid isPermaLink="true">https://tian404.top/blog/week8/week8</guid><description>2025-11-24 ~ 2025-11-30.</description><pubDate>Sun, 30 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;谨以此文，纪念我那消逝于代码间的笔记。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;其实纯粹的学习和积累倒也没有那么值得记录，但为了在漫长的大学基础知识学习的过程中获得一些正向的反馈，还是定期记录一下最近所完成的内容。&lt;/p&gt;
&lt;p&gt;简单来说，这周完成了概率论基础知识的自学。不过也的确仅限于最基础的内容，后续的长期学习还是有必要的。再加之非常经典的烂尾剧情，即每当自己开始自学一门课程，往往会在前面n节课中觉得非常轻松，但到了最后5-10节课发现逐渐开始听不懂，索性便开始摆烂。这样的方式的确是不可取的，但也确实真真切切多次发生在了我的身上。前几天把自学课程上课使用的讲义(现在应该是已经整理成了书本的形式，而且还挺有名的)打印了下来，接下来抽空阅读一遍，巩固一下概率的相关知识。&lt;/p&gt;
&lt;p&gt;那么接下来，我想是时候进入到这篇周记最为核心的内容了：笔记二三事。简而言之，从结果上看，之前大约三门半课程自学的笔记由于一些操作失误，被直接删除了，且无法恢复。至于为何会发生这样离奇的事情，的确是一系列巧合作用下的结果。在下载Minecraft启动器对应的Java配置文件时，由于选项勾选失误，配置文件并没有集中在一个项目文件夹中，而是散落在了我放置所有电脑程序的文件夹中。为了美观，我手动把所有配置文件移动到了回收站。此时，Java配置文件的安装程序再一次启动，无知的我选择了其中“删除过去安装的版本”的选项，悲剧发生了。由于配置文件没有集中在一个项目文件夹中，删除程序误将上一级的电脑程序文件夹识别为存放配置文件的文件，于是执行了清空文件夹中内容的操作。我先前的笔记以Markdown形式保存于Obsidian软件中，于是一并被误删。加之利用删除程序删除的内容将直接被清楚，不会进入回收站，笔记文档也没有进行云端保存，最终就彻底从笔记本电脑上消失了。被误删的软件，在我花了大约一个多小时后成功恢复，但笔记的恢复以我的技术能力，是不可能的了。&lt;/p&gt;
&lt;p&gt;虽说我记笔记的初衷并不是复习，毕竟是提前学习的内容，后续上课还是会再过一遍的，但这些文档终究是课余时间百余小时学习的成果，一下子全部消失，多少是有些受到打击。不过，往好了想，笔记、数据终究是会消散在时间中的，或许适当放下这些形式上的内容，认识到自己在不断的学习过后，已经不同于往日的自己，继续前进，也是一种很好的选择。&lt;/p&gt;
&lt;p&gt;若有下次，我定会将重要文档和程序代码上传GitHub托管。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;最近西安的天气也是非常反常。已经11月月底了，却还会有20℃的温度，国庆带来的羽绒服也是至今都没有穿上。这样的体验还是很奇妙的。&lt;/p&gt;
&lt;p&gt;其他好像也没有太多要记录的内容了，目前的生活主要还是在沉淀与积累中度过。下周有程序设计的结课笔试和机试，希望一切顺利。&lt;/p&gt;
&lt;p&gt;如果有读者的话，希望你读的开心。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/137770003&lt;/p&gt;</content:encoded><h:img src="/_astro/Week8.WzIjLi_G.jpg"/><enclosure url="/_astro/Week8.WzIjLi_G.jpg"/></item><item><title>周记 Week7</title><link>https://tian404.top/blog/week7/week7</link><guid isPermaLink="true">https://tian404.top/blog/week7/week7</guid><description>2025-11-17 ~ 2025-11-23.</description><pubDate>Sun, 23 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Enjoy the journey.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;这周高数的期中考试成绩终于是出来了，比想象中的还要更糟糕一些。总结下来主要是两方面的问题。一方面是考前的复习策略，我固然是有定力能够做到一整天待在书桌前高效刷往年的真题卷的，但是对于高数这种学科，适当的总结还是很有必要的。而且似乎考前的复习不能继续沿用平时能够看懂答案即可的学习思路，还是需要更多的动笔计算。另一方面就是高中时数学允许使用计算器导致计算能力的落后，一定程度影响了做题速度和考试心态。总之，希望这些问题能够在接下来得到改善。从专业的整体成绩来看，还是能发现本专业学生恐怖的实力(或许更应该说内卷能力)，期末考试确实需要好好准备了。&lt;/p&gt;
&lt;p&gt;另外，这周也是结束了多变量微积分的自学，并开始了概率论基础知识的学习。虽然高数的期中不太理想，但我觉得我当下对于计划的执行力还是值得称赞的，能够给自己带来适当的正反馈。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;这周是西交一年一度的梧桐节，铺满梧桐叶的彭康路还是挺好看的。不过实景和网图对比后，还是能发现后期调色帮了很大的忙。还有一点比较有趣的是，虽是西交的梧桐节，但我路过时，见到的拍照的人普遍像是校外的游客。总之，路过彭康路的时候，还是比较漂亮的。&lt;/p&gt;
&lt;p&gt;最近也有在看一些访谈类的播客，结合之前读到的亦或是听到的类似内容，我发现有一个词是被反复提及的：Journey，或者说叫过程，但我还是更愿意用英文来表达，因为英文所传递的含义更加到位。大抵是从初中开始，我就常常听到类似于“享受过程”的观点。之前听闻这样的观点，我多半会觉得这是成功人士站着说话不腰疼的产物。但是随着阅历增加，以及从越来越多有所作为的人口中听到类似的表述，最近我也开始思考这会不会是很多人探索完后得到的宝贵的人生哲思。小学时常看到的所谓名人名言中有一句，大意讲的是成功是70%的汗水+20%的天分+10%的运气 (版本有很多，但基本讲的都是这个意思)。现在想想，这样的观点着实是有些浅薄。很多时候，运气可能要占到90%，甚至更高。我们必须承认的是绝大多数人终其一生也无法成功或有所作为，因为大部分人的运气是不够好的。当自己的目标无法成功达成时，专注于目标导向往往不会有好的结果。而如果可以用心去做自己喜欢或是感兴趣的事情，即使失败，过程中所产生的愉悦情绪依旧是很宝贵的收获。这里需要注意的是区分目标和方向。一个很现实的例子是，很多高考考生的目标，或者说终极目标都是“我要考入清北”(亦或是其他某些学校)。这样的目标导向，一旦无法实现，难免会有所失落。但倘若以方向为导向，秉承诸如“我需要获得继续接受教育的机会”的理念，便不会那么患得患失，能够获得更好的心态。所以，正如开头所言：&lt;/p&gt;
&lt;p&gt;Enjoy the journey.[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/58888280#1&lt;/p&gt;</content:encoded><h:img src="/_astro/Week7.DRA7piPf.jpg"/><enclosure url="/_astro/Week7.DRA7piPf.jpg"/></item><item><title>周记 Week6</title><link>https://tian404.top/blog/week6/week6</link><guid isPermaLink="true">https://tian404.top/blog/week6/week6</guid><description>2025-11-10 ~ 2025-11-16.</description><pubDate>Sun, 16 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;不知道为何，最近总觉得时间过得格外的快，估计有每周都有考试的缘故。前几天翻看之前的周记，发现颇有逐渐不知道写些什么的趋势，仔细想想也有合理之处，毕竟当下阶段的生活还是比较单调的，但还是尽量记录一些值得记忆的细节，权且留下一些值得回忆的内容。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;最近一周的主旋律依旧是自学基本的数理知识。好消息是进展顺利，坏消息是或许是因为缺乏足够的习题训练，可能多变量微积分方面的计算并没有特别熟练，尤其是几个沟通了原函数、单变量积分、双重变量积分、三重变量积分的重要定理，可能在计算上确实还有不少的提升空间。但好在自学的目的主要是在理解原理，整体思维框架和联系还是构建得比较完善的，服务于后续的学科探索应该是没有问题。至于那些习题训练，就留给下学期的高数课吧。&lt;/p&gt;
&lt;p&gt;讲到这个，正好最近和同学有了些沟通和反思。结合高数期中考试的情况 (虽然目前依旧没有出分，我也没有去对答案，但仅基于考试的感受来看，确实是不太理想)，自己或许前段时间过多的关注了理解与思维层面。只能说高数这学科考前还是得大量的集训来提升题目的熟练度。相比之下，和我沟通的同学则表示自己做了太多的题目，以至于找不到方向和重点，缺少总结反思。我认为或许二者综合一下可以有更好的效果。&lt;/p&gt;
&lt;p&gt;今天上午刚刚完成了科学技术与工程伦理课程的结课考试。整体上这门学科就是非常纯正的文科，而且又是开卷，所以单论难度并没有太多感觉。只是文科开卷考“只要写不死就往死里写”的原则确实对我的手腕造成了不小的压力，好在最后卡线写完了卷子，过关应该是没有问题。&lt;/p&gt;
&lt;p&gt;对于这门课程，我不得不将它分为课程内容和授课老师两个部分来独立评价。对于课程内容，其实我觉得意义不算太大。真的想要利用科学技术和工程技术来害人，亦或是不对公众社会负责的人，并不会因为一门课的教育就有所改观，或者说这样的问题更多还是在做人与为人上，而不应该局限于技术与工程层面。当然，在工程与科学技术中强调伦理我是认同的，只是课程的内容和形式确实有待商榷。当然，这门课的两位老师，党政老师和张家忠老师，我还是非常喜欢的。主要还是因为二位先生所展现出来的对于课本以外知识的重视与对学习思维转变的关注。课上花了不少时间讲课本以外各种学科的知识，例如牛顿定律是否一直成立、量子力学等等，讨论课的设置的确也是一种很好的尝试。总而言之，两位老师还是非常有水平和思想境界的，值得一听。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;有时不得不感慨，同一个坑，一个人就是会跳进去很多次，或者说头铁。继前两次尝试食堂生煎包失败后，这周索性直接尝试了最贵的虾肉生煎，企图从中寻找到一些故乡食物的踪迹，但最终还是以厚皮煎包子告终。以后或许可以试一试到校外寻找生煎。&lt;/p&gt;
&lt;p&gt;下周梧桐节就要开始了，听说彭康路的风景会不错，值得去看看。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;以上大概就是这周的情况了，目前依旧处在期中高数发挥不理想的阴霾中。不过还是放下过去，适当总结，继续向前吧。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/128223836&lt;/p&gt;</content:encoded><h:img src="/_astro/Week6.km8BcL3_.jpg"/><enclosure url="/_astro/Week6.km8BcL3_.jpg"/></item><item><title>周记 Week5</title><link>https://tian404.top/blog/week5/week5</link><guid isPermaLink="true">https://tian404.top/blog/week5/week5</guid><description>2025-11-03 ~ 2025-11-09.</description><pubDate>Sun, 09 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这一周也是临近尾声了，虽然可能有一些波折，但总体上还算是顺利的。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;从自己的学习节奏来看，这一周还算是顺利的。尽管有高数期中考试的压力，但还是尽可能抽出时间，完成了单变量微积分内容的自学。不过这里的自学更多指的是理解如何运用，理解整体的知识架构是如何构建起来的，要说单纯的做题，并没有因此而有太大的长进。&lt;/p&gt;
&lt;p&gt;那说到这里，就不得不提到刚刚在今天下午结束的高数期中考试了。整体上来讲，如果和两周前的线代期中考相比，考试感受是完全不一样的。单论前期的复习计划其实并没有太大的出入，甚至还投入了更多的精力。不过高数，尤其是应对高数的考试，可能确实平时多练是更重要的。或许下一阶段可以多一些练习和动笔环节。成绩大抵是要过几周才能出的，虽然不报什么期待，但也不必太过焦虑。单单一次考试还没有太大的影响，毕竟仅一门高数就还有三次大考。机会是还有的，就看怎么把握了。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;这周主要是进行了体测。一千米和引体向上的确是很头疼的项目，不过也算是撑下来了。往好的方面想，我们班级体测比较早，相较于接下来几周测试的班级，气温更高，或许跑一千米的时候不会那么难受，也比较容易跑好。&lt;/p&gt;
&lt;p&gt;同时，祝贺Faker选手达成六冠成就。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;整体上节奏确实是挺顺利的，也能够坚持按照自己的节奏进行。不过就高数考试的感受而言，可能状态还是需要调整。希望下半学期空余时间变多后可以好好分配，期末情况有所改善。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/135552591&lt;/p&gt;</content:encoded><h:img src="/_astro/Week5.BR648HT1.jpg"/><enclosure url="/_astro/Week5.BR648HT1.jpg"/></item><item><title>周记 Week4</title><link>https://tian404.top/blog/week4/week4</link><guid isPermaLink="true">https://tian404.top/blog/week4/week4</guid><description>2025-10-27 ~ 2025-11-02.</description><pubDate>Sun, 02 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;那么又是一周过去了。这周因为最后留出来的时间比较短暂，所以周记也会简短一点。总而言之，这周的内容相较于以往是更加丰富的，当然也显得更加忙碌。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;这周已经是本学期第八周了，所以有一门必修和两门选修课都将在这一周结课，接下来的日子或许可以因此轻松一点，希望可以多匀出一些时间给生活体验。这周六晚上也是进行了东周列国志选修课的结课考试，因为是开卷考试，单纯的通过还是没有问题的，只是有几道选择题略显抽象，可能要高分有点难。不过说到这门课，授课老师确实给我留下了很深的印象。任丹教授是化工学院的，因个人的兴趣而开设了这门偏向文学的选修课，这本身就是比较少见的。进一步了解后，发现老师当年上交毕业后便获得了去新国立读博的机会，确实是很厉害。我也的确逐渐发现有能力的人并非一定是把自己的生活完全奉献给一件事情，当然，能做到这样投入的人其实也很少，也很值得敬佩，但我认为更理想的状态还是能有自己的兴趣和爱好，研究探索之余加以调剂，我相信是可以长期受益的。&lt;/p&gt;
&lt;p&gt;自主学习方面，由于结课考试的复习，进度略有放缓，不过还是预计下周可以在高数期中考前结束单变量微积分的自学。另外值得一提的是，这几天线代的期中成绩出了。果然，正如我预计的一样，大家的成绩普遍高的可怕，普遍在80+，自己的考试结果倒也还行，可能是考前临时加练的缘故，但感觉更多还是运气好，希望下周的高数也能顺利。于我而言，高数的确比线代更加难以应对一些。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;这周主要值得一提的是周六下午去第二届具身智能与系统大会凑了个热闹，感觉还是挺有趣的。不过因为现在还是没怎么接触专业知识，会议的内容也是基本没有听懂。不过过去开开眼界，进行一些兴趣的探索也是很不错的。虽然因此失去了一个下午的考试复习时间，但我觉得还是值得的。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;这周的内容大抵也就是这些。总而言之一切都在慢慢的按计划进行，逐步向前。虽然可能节奏有些放缓，但偶尔放慢脚步看看风景，也未尝不是一件好事。希望下周高数考试顺利。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/136409045&lt;/p&gt;</content:encoded><h:img src="/_astro/Week4.3KvYHV3N.jpg"/><enclosure url="/_astro/Week4.3KvYHV3N.jpg"/></item><item><title>周记 Week3</title><link>https://tian404.top/blog/week3/week3</link><guid isPermaLink="true">https://tian404.top/blog/week3/week3</guid><description>2025-10-20 ~ 2025-10-26.</description><pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这周感觉过得格外的快，近期也颇有些放慢脚步的意味。不论如何，我觉得还是有必要在一周结束的时候梳理一下这周的收获，自己完成了哪些事情，并准备向下一阶段进发。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;这部分基本上也就是平时完成课内的课程学习，顺便理解一下作业题的解题思路。继完成了线代的初步学习后，现在也是开始了下一门数学基础课程的学习。目前英语的积累和练习确实也是断断续续，主要还是不清楚自己锻炼英语的诉求是什么。倒不是说不理解英语为什么有用，只是说目前还不明确未来想要走什么样的路。英语的作用可以有很多，例如参加英语的相关考试、阅读论文、实际交际等等，不过从第一性原理的角度出发，在没有明确自己想要什么的条件下，的确是难以了解自己学习的诉求，也就只能先每天维持着最低限度的练习。希望接下来能尽快探索出一条道路或者说是方向。&lt;/p&gt;
&lt;p&gt;值得一提的是，这周开始进入了期中周。与其说是期中周，倒不如讲是开始有考试出现了。因为倘若真的等到这段时间所有的考试结束，便会惊讶的发现似乎还有一两周这学期的课程内容就结束了。由此可见大学的期中期末和中学阶段还是有不小的区别的，表现为没有集中的一小段时间完成大量考试。&lt;/p&gt;
&lt;p&gt;这周末进行的是线代的期中考试，也是我在西交参加的第一次大型考试。考试前感觉并没有花太多时间复习，也就仅仅是考试前几天利用晚上的空闲时间把半学期的书本内容过了一遍，然后刷了近五年的期中考试题，接着便匆匆忙忙上了考场。单论考试本身感觉并没有我预想中的令大家哀鸿遍野的难度，不过这些考试终究看的是相对排名，单纯讨论难度可能还是意义不大。过两周还有高数的期中考试，于我而言可能那个才是真正的挑战。&lt;/p&gt;
&lt;p&gt;总而言之，在我看来，这次的期中考试，或者可以说大一上学期的考试，主要的作用就是让我认清自己在群体中的水平如何。一定程度上最终的结果会影响到我对于未来道路的规划，当然前提是对于这学期的课程以一种自己能接受的强度正常学习，不摆烂，这样才能比较好的进行下一步规划。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;最值得庆祝的当然是这周开始天气终于逐渐放晴了，而且根据现在的天气预报，应该接下来一段时间不会出现长时段阴雨连绵的盛况了。古有蜀犬吠日，今有秦犬吠日。在江南生活了十多年都未曾感受到这样的雨季。现在最大的愿望就是接下来能够继续放晴。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;总之最近进入了学期中期的阶段，各种期中考试、结课考试、大作业、小组作业也是集中在这段时间，再加上需要完成数理基础的相关学习，补之前暑假欠下的债，确实是有些难忙得过来。不过也是稍微看了一下，大概再过个三周，时间应该能够逐渐宽裕起来。&lt;/p&gt;
&lt;p&gt;最近也是略微有些开始难以完成既定目标，也因为接收到了很多的信息，愈发让自己不太清楚路该怎么走，内心也有些浮躁。自己还有很长的路要走，现在还不是放松的时候。&lt;/p&gt;
&lt;p&gt;加油吧。[^1]&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The story on paper breaks through the embankment with a loud bang, and tomorrow&apos;s prologue should be yours.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/134201758&lt;/p&gt;</content:encoded><h:img src="/_astro/Week3.BBpGOVfZ.jpg"/><enclosure url="/_astro/Week3.BBpGOVfZ.jpg"/></item><item><title>周记 Week2</title><link>https://tian404.top/blog/week2/week2</link><guid isPermaLink="true">https://tian404.top/blog/week2/week2</guid><description>2025-10-09 ~ 2025-10-19.</description><pubDate>Sun, 19 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;一转眼又是一周多的时间过去了，时间临近期中考，可能能说的事情确实也没有那么多，但也还是花上个二三十分钟，回顾一下一周多来所做的事情，为接下来的日子做好准备。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;经过将近半个学期的摸索，我也是逐渐发现了尽管自己所在的专业由于发展时间相对而言较短，暂时还没有形成其他某些老牌学科“祖宗之法”般的课程，但由于本科教学框架的设计，难免还是有很多无用的水课。起初还抱有对大学已经脱离应试教育阶段的想法，便尝试着听了几节，后来发现的确是没有太大作用，也不在我的兴趣点上，索性便直接拿来写作业。&lt;/p&gt;
&lt;p&gt;到这篇周记写稿为止，笔者已经完成了线性代数课程的自主学习。可以明显感觉到国外授课与国内本科授课的区别所在。从最浅显的视角来看，我在大学内所接受的课程教育更加注重计算，而网课中的教授则更加注重思维的链条和整体的思维逻辑。通过自学相关课程，我能够清晰的认识到自己所学的内容并非空中楼阁，而是人们为了解决现实生活中的问题而创造的理性工具，往更加功利或者是直接的角度想，我也能理解当下所学的知识在自己的专业领域内能做到什么，而非只是听着每节上课老师通过反复强调诸如“xx学科在你们日后的xx专业里很有用，得好好学”的话术来鼓励我认真完成必修课程，发自内心的感受和认可要远远胜过灌输而来的理念。&lt;/p&gt;
&lt;p&gt;在我看来，上课和学习的意义不应该是让人们以自己能解很多所谓的难题而自豪。其一，在现实中并没有那么多学习和上课中会遇到的闭卷考，真正需要这种很会解题，或者说解难题能力的，主要是那部分极少数的数学家，况且也并非只有会做题才能研究出伟大的数学成果。这就不得不提到第二点，在我看来，学习真正的目的应当是让我在未来遇到某个问题时，能够知道有怎样的潜在的解决办法，亦或是了解前人有什么相关的思路，至于已有的方法具体是怎样，除了少数极其基础的内容，剩下的大可以通过资料查阅去学习我到底应该怎么做。这样的目的恰恰是和注重思维链条与框架的教学相符的。&lt;/p&gt;
&lt;p&gt;不过话说回来，我的线代老师授课水平尚可，我对他并没有什么意见。只是在学习了其他思维体系下的课程后，有了一些触动和感想。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;最近这段时间忙于听课，国庆回到西交后基本也是宿舍、教室、图书馆的三点生活。本来开学时宏伟的运动计划如今也是只剩下了每周的体育课和不得不开始的步道乐跑，确实有点令人唏嘘。希望接下来的日子里能够做好Work-Life Balance。不过说实在的，感觉在大一恶补暑假欠下的基础知识并完成专业的初步探索任务结束前，的确有点难有时间闲下来。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;近期来主要精力放在了课程的自学上。实事求是的讲，Gilbert Strang老爷子的课并没有往上某些言论所言那么神乎其神，甚至可以说若是为了刷绩点，不妨拿这时间去听宋浩老师的相关课程，亦或是自己刷刷题。于我个人而言，我非常感谢和喜欢Gil的讲课与思路。这其中当然有我长久以来对MIT向往的滤镜因素所在，但更多的还是因为他让我感受到了他对自己所做事情，或者说事业的热爱，意识到了线性代数给了人们创造世界的能力，化混乱为有序，化不可见为可见，也祝愿教授身体健康。前些日子有听到学长来交流经验时认为对于大学非数学专业学生而言，大可以通过快速自学，理解一些重要内容的原理、概念等即可。即便从速成以及在内卷赛道上尽快建立优势的角度来看，这或许是对的，但现在的我会认为还存在着比速成更加重要的东西：思维。当然或许二者并不冲突，但限于本人能力，的确只能顾及一者。或许想要走出前人没有走出过的路，这样的过程是必须经历的。总之，希望接下来一周也能一切顺利。&lt;/p&gt;
&lt;p&gt;古之成大事者，不惟有超士之才，亦有坚忍不拔之志。&lt;/p&gt;
&lt;p&gt;若是有读者，希望你看的开心。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]:Hero Image:  https://www.pixiv.net/artworks/136458242&lt;/p&gt;</content:encoded><h:img src="/_astro/Weeek2.Dd363wB2.jpg"/><enclosure url="/_astro/Weeek2.Dd363wB2.jpg"/></item><item><title>周记 Week1</title><link>https://tian404.top/blog/week1/week1</link><guid isPermaLink="true">https://tian404.top/blog/week1/week1</guid><description>2025-09-08 ~ 2025-10-08.</description><pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;经过大半个国庆的倒腾，个人的博客网站基本框架最终也是得以构建。说是周记，但这第一次倒不如说是月记。现在写这篇内容时，由于本人过去并没有太多记录生活的习惯，开学至今发生的事已有不少遗忘，或许也就近两周的事还能勉强回忆起来，倒也算说的过去。&lt;/p&gt;
&lt;h2&gt;闲谈&lt;/h2&gt;
&lt;h3&gt;关于博客&lt;/h3&gt;
&lt;p&gt;对于一个几乎没有技术基础，平时也并不热衷于社交生活的人而言，创建起自己的博客网站属实是一件不多见的事情。一个月前，刚进入本科学习的笔者或许是出于学业上peer pressure的缘故，急于想要在新的环境中证明自己的能力，但又深知自己所处的环境高手如云，加之初次进入新环境而接收到了大量信息，难免陷入焦虑或是不知从何开始。后来，随着初入大学的新鲜感褪去，同时也受益于学院的新生见面会上学长的分享（在最初的欢迎文章内已经提及），逐渐发现缓解焦虑的方法之一便是知道自己目的地开始做事，有些事情开始做或许比做的好更加重要。&lt;/p&gt;
&lt;p&gt;对于一个没有项目开发经验的新手而言，实现这样一个项目并非谈的上容易。虽然有开源资源、前人的教程以及LLM模型的帮助，但完成部署过程依旧消耗了大量的精力，尤其是过程中还经历了第一版项目在部分浏览器模式下渲染存在问题而不得不推倒重来的插曲。所幸最终运气较好得以实现基本功能，出于项目性质的原因，以后也的确能把更多精力放在内容的创作上。&lt;/p&gt;
&lt;p&gt;至于为何想要创建个人的博客网站，一方面可能是没有意愿在大众化的社交平台上过多分享自我，另一方面便是正反馈。关于正反馈，在一个月的大学生活中，可以很明显的感受到与先前学习的区别——没有考试，或者说与以前相比少了很多。我本人并不喜欢考试，但不可否认的是过往的教学模式能够提供及时的反馈。无论结果如何，考试均提供了一种参考，反馈我近期的学习状况。然而进入大学，我时常感觉到自己上了很多课，却难以发觉自身的能力提升。人的持续学习需要正向的激励，那些远大的梦想固然是最深层次的内驱力，但若只有理想抱负，难免会感到生活空虚。而以周记，亦或是记笔记的方式，对自己近期的学习和生活进行归纳总结，当文字的量日益累加，我们便不难从一行行的文字中发觉自我的提升和变化，这某种程度上也算是一种重要的正反馈。&lt;/p&gt;
&lt;h2&gt;学习&lt;/h2&gt;
&lt;p&gt;开学第一个月，倒也是由于刚起步的缘故，主要还是依托于课堂的教学。高数课老师生动幽默的教学风格着实是让我印象深刻，不少图片也已被我制作成了表情包日常使用。当初英语选课时在学长的建议下选择了课堂较为有趣的一位老师，现在听下来确实是明智之选。&lt;/p&gt;
&lt;p&gt;同时，出于个人兴趣，截止本篇周记写稿时，已经观摩学习完成了&lt;a href=&quot;https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab&quot;&gt;3Blue1Brown&lt;/a&gt;关于线性代数的基础讲解和ZJU翁恺老师的&lt;a href=&quot;https://www.icourse163.org/course/ZJU-9001?from=searchPage&amp;#x26;outVendor=zw_mooc_pcssjg_&quot;&gt;C语言入门&lt;/a&gt;内容讲解。得益于当今互联网的发展，本科阶段虽无缘前往曾经梦想的浙江大学计算机系进行学习，但也能够跨过屏幕与老师进行思想的交流，我对此还是感到非常幸运的。&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;这一个月以来也算是适应了西安这边的环境，不过连着下了一个月的雨的确是有反我对西安的固有认知，加之兴庆校区让人难以评价的排水系统，属实是有了一段未曾有过的体验。&lt;/p&gt;
&lt;p&gt;我算是热爱体育运动的人，不过还是因为下雨的缘故，这一个月没有太多的机会和年级里的人踢球打球。足球新生杯也是参加过书院内的比赛后没了下文。接下来进入深秋后，但愿能多一些晴天，多一些踢球的机会。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;这一个月的内容，记忆深刻的大抵也就是这些。有时候可能因为能说的太多反而难以写出太多的文字。没提及的内容，便随他去吧。&lt;/p&gt;
&lt;p&gt;如果有读者的话，希望你看的开心。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/111024784&lt;/p&gt;</content:encoded><h:img src="/_astro/Week1.D5PYhhTj.jpg"/><enclosure url="/_astro/Week1.D5PYhhTj.jpg"/></item><item><title>Welcome to my blog</title><link>https://tian404.top/blog/welcome-to-my-blog/welcome-to-my-blog</link><guid isPermaLink="true">https://tian404.top/blog/welcome-to-my-blog/welcome-to-my-blog</guid><description>Hello Astro blog</description><pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;写在开始&lt;/h1&gt;
&lt;p&gt;欢迎来到我的博客。&lt;/p&gt;
&lt;p&gt;本博客的创建灵感来源于学院中学长&lt;a href=&quot;https://axi404.top/&quot;&gt;阿汐&lt;/a&gt;建立的个人博客，开源精神使得最初的设想得以实现。&lt;/p&gt;
&lt;p&gt;从这里开始，尽情创造吧！&lt;/p&gt;
&lt;p&gt;日拱一卒，功不唐捐。[^1]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[^1]: Hero Image: https://www.pixiv.net/artworks/111335141&lt;/p&gt;</content:encoded><h:img src="/_astro/Tian_banner.Cwqt9Mx9.png"/><enclosure url="/_astro/Tian_banner.Cwqt9Mx9.png"/></item></channel></rss>