这次答辩我必须通过,一旦不通过,相当于我又损失了一个杠杆,带来的坏影响非常大。

一、注意点

(一)内容准备

2月15日T9答辩。

视频号体验优化

要学会利用 对比 和 互惠 等人性特点。

答辩的时候可以从 生产和消费 进行描述。

要能体现的技术点:

  • 技术深度

    • 说的时候要多说一些术语,机器学习这块的
  • 大胆创新:说明如何让自己工作更加出色的

    • 说刚开始是自己靠硬逻辑摸索,然后后面自己自学尝试了一些机器学习,效果不错。
    • 视频镜头指标(这里有数学,可以说)
    • 为了提升CDN预测率,加入了 损失函数的概念,这个收益很大
  • 展示自己思考:要展示自己思考问题的方法,简单概括一下解决一个问题所使用的步骤,以及自己在解决此类问题上的经验和见解。

    • 每个方案都要说明
  • 成果:

    • 提升了精确度,降低了带宽成本
    • 发表量提升,成功率提升(提前压缩,失败了重试机会更大),点赞量提升
  • 团队协作能力,领导能力,协调能力

    • 协同了多个半屏控件
    • 提供了通用的进度监控
    • PostSession
    • 统一了长视频压缩和朋友圈后台压缩
    • 把CDN预上传、压缩等逻辑都拆成了组件,之前都是耦合的

(二)可能会被质疑的点

  1. 模型是用什么训练的,怎么使用的,为什么不用Kara?

这个问题是这样:

首先Kara是一个比较好的训练平台,但我相信使用Kara训练的同学可能也会发现它有所限制的地方,涉及的权限问题比较多。

所以我的思路是:先自己进行本地模型的摸索和训练,经过快速收集各种特征不断摸索,发现有效后,再将收集到的有用特征迁移到Kara上,这样既节省了负责Kara同学的时间,也能尽快将模型收益应用到业务上。

当然了,在特征收集阶段,我也有借鉴Kara提供的基础特征,虽然收益不是很大,因为视频号这里的行为多受到业务流程的影响,比如:水印检测、是否实名等等。

  1. 提前开启压缩不会产生性能问题吗?

  2. 你怎么解释模型的结果?或者你怎么证明SVM是最优的解决方案?

首先我来解释下第一个问题:解释模型,做工程的可能都对机器学习这个黑箱结果有所怀疑,所以我也从3个层面去解释这个问题。

第一,SVM的数学原理我们应该都有所耳闻,一句话总结就是:通过数学计算,找到一个尽可能能很好区分两类数据的方法,所以从数学原理上SVM是很契合这个业务场景。

第二,我将前期使用Hard Condition预测出会发表的数据导入到模型中,匹配度达到99%,这说明训练出的模型兼容了我摸索出的发表条件。

第三,模型训练后,可以使用RFE筛选出前10的特征量,RFE是数据竞赛中最为流行的特征筛选方案之一,如果筛选出来的特征和我们的预期相差太多就值得怀疑,但经过RFE筛选前10的特征量和我们预期是一致的。 👨‍💻 这里要补充

  1. 你怎么证明你的镜头算法和色彩逻辑是最好的?

  2. 半屏上移AOP不会有性能问题吗?

  3. 为什么不使用深度学习?有没有尝试过深度学习呢?

在尝试启动初期时,各种模型都有所尝试,在SVM精确度70%左右时,深度学习有着更好的精确度值,大致会高出5%左右。

但随着我不断收集更多的特征量,SVM和深度学习的精确度在不断逼近,目前两者模型基本计算出的都是95%的精确度。

相比深度学习,SVM模型更简单,更容易训练和验证问题,所以我目前采用了SVM模型,并将优化的重心从选模型切换到挑选更有效的特征上。

比如:镜头和色彩度特征,让预测的精确度提升了4%;又比如有无创建过视频号,让预测的精确度提升了6%;再者我创建的发表衰退指数,让预测的精确度提升了2%。

  1. Promise校验为什么放前端做,放后台做不行吗?

我们可以看一下这里有哪些行为:

  1. 微信授权 : 后台解决不了,需要弹出校验UI

  2. 检查feed内容 cgi Promise : 如果有违禁内容提示作者,保护作者权益

    • 水印、mediaSDK特征 本地计算 Promise 【先行】
    • PostPreCheck cgi 校验 Promise:视频号身份验证,验证是本人发表的,可能对账号有害的视频 【后行】

二、我必须做的事情

  • 做PPT

三、我正在做的事情

2023年01月26日

  1. 统计现网命中CDN预上传的用户,在发表页面退出的量有多少

150 / 1000 = 15%

大盘退出的量是:3356/19542 = 17%

  1. 补充触发检测
  • 有无网络,监听网络变化,判断当前wifi和流量情况 -> ✅
  1. 统计一下有多少人在发表阶段是wifi,现在的策略应该是: -> ✅
  • wifi无脑上传
  • 有流量情况下:模型预测

只要这两个加一起能到99%就行,节后要patch一下18939上报时的环境。

用户流量虽然没有损耗,但损耗CDN存储,所以这里CDN存储得有清理机制(一天清理一次),具体要怎么清理?

搞几个不同的策略,后台可以按照CDN负载进行调整:

{wifi,流量} x {全部,高活} x {上传总耗时 -> 文件大小/网络流量}

策略一:wifi全开,流量走模型
策略二:全部走模型
策略三:高活走模型

  1. 模型支持配置特定入口默认打开CDN,比如红包封面,这种活动偶尔才开展一次,要提供最好的发表体验。

xlab来控制吧,需要写代码👨‍💻 -> ✅

  1. CDN预上传需要等压缩完成后再触发✅

2023年01月27日

  1. CDN 一天清理一次具体要怎么清理? 👨‍💻

客户端本地 tempLocalID 带给CDN,CDN去后台去回溯。

要看看代码具体要怎么写。

  1. 先尝试一下有没有精确度更高的模型 👨‍💻

  2. 要把这个训练出来的模型嵌入到Xcode项目中

    (1) SVM一共有多少参数?我想复刻一个SVM模型
    SVM一共有6个参数,它们分别是:核函数、惩罚项C、γ值、内核函数系数a、b、epsilon。要复刻一个SVM模型,需要确定上述6个参数的值,然后使用对应的算法(如支持向量机算法、序列最小优化算法等)将训练集中的数据进行训练 ,最终获得一个完整的SVM模型。

    (2) 打印SVM模型的所有参数:
    print(model.get_params())

    (3) 你好,我在电脑A上使用电脑训练出来一个SVM模型,我现在有这个模型的所有参数了,我想在电脑B上用这些参数复刻出电脑A上一模一样的SVM模型供使用,也就是不想在电脑B上再训练一次模型了,在电脑B上使用python代码怎么实现呢?

    可以使用scikit-learn库中的svm.SVC()函数来实现。首先,在电脑A上,使用svm.SVC()函数按照参数训练出模型,并使用pickle库将它保存到本地文件系统中。然后,在电脑B上,利用pickle函数读取本地中的模型。最后, 使用模型中的参数和svm.SVC()函数,就可以重构出原模型。下面是示例代码:

    电脑A

    import pickle
    from sklearn import svm
    clf = svm.SVC(kernel=’rbf’, C=1.0, gamma=0.1)
    clf.fit(X_train, y_train)
    with open(‘model.pickle’, ‘wb’) as f:

     pickle.dump(clf, f)
     
    

    电脑B

    import pickle
    from sklearn import svm
    with open(‘model.pickle’, ‘rb’) as f:

     model = pickle.load(f)
    

    clf = svm.SVC(kernel=model.kernel, C=model.C, gamma=model.gamma)
    clf.fit(X_train, y_train)

    (4) 请教一个问题,SVM模型训练出的模型,可以用json格式把所有字段都打印出来吗

    答:不可以。SVM模型训练出的模型是一个复杂的函数,不能直接转换成JSON格式;它只能存储训练得到的模型参数,例如支持向量、核函数等等,而无法将这些参数信息打印出来。

    (5) 如何把使用python训练的SVM模型,导出mlmodel文件格式?

    将SVM模型使用python训练完成后,可以使用CoreMLTools库来将模型转换为mlmodel文件格式。首先,使用coremltools.converters中的sklearn.converter_to_coreml,将训练好的SVM模型转换为CoreML模型,该方法会将模 型保存到V2格式的 Core ML模型。然后,调用MLModel的save方法将得到的Core ML模型保存为.mlmodel文件。示例代码如下:

    Import necessary packages

    import coremltools
    from coremltools.converters import sklearn

    Convert SVM model to Core ML

    svm_model = coremltools.converters.sklearn.convert_svm(clf)

    Save the model

    svm_model.save(‘svm.mlmodel’)

    (6) python 3.8.2 import coremltools 执行后会导致python crash,为什么?
    因为coremltools还不支持Python 3.8.2,请使用稳定版本的Python 3.7.X来运行coremltools.

    (7)我的mac上已经有python3.8.2,我希望安装3.7.2并在pycharm执行时也使用python3.7.2,我可以怎么做?

    首先,你需要安装pyenv。这是一个Python版本管理器,可以让你在同一台机器上安装多个Python版本。它可以让你控制Python环境,轻松切换不同的Python版本,并且会提供一个更易用的python3环境。

    安装pyenv之后,按照pyenv安装文档的步骤,使用命令行安装指定的Python版本:

    1
    pyenv install 3.7.2

    安装完成之后,运行以下命令激活python3.7.2环境:

    1
    pyenv local 3.7.2

    完成以后,就可以在PyCharm中使用python3.7.2了。如果你想在PyCharm中创建python3.7.2虚拟环境,请参考PyCharm帮助文档 进行操作。

一定要把python训练模型导入iOS的做出来,后面做App也能用上。

做出来了:

  1. 触发方式需要多行为触发 👨‍💻

  2. 了解一下CDN带宽收费情况,只上传要收费吗? 如果都打开的话,收费情况如何?

腾讯云CDN收费是按流量计费的,相应的价格因地域以及带宽有所不同,具体按照1GB上传到CDN,腾讯云的收费大概为:按国内地域的话,每GB的收费约为0.8元;按海外地域的话,每GB的收费约为0.9~1.2元。

  1. 如果需要动态变更,可以把模型重新下发,这个是预留的能力。 ✅

  2. 测试一下,如果不做标准化和归一化处理,模型精确度如何。 ✅

精确度会掉2%。

2023年01月28日

知识点

  1. 我现在在mac上使用pycharm,当前使用的python路径是/usr/local/bin/python3.7,我希望在这个路径下执行pip install scikit-learn==1.0.0 ,我可以怎么做?

可以在terminal里使用的命令是:
/usr/local/bin/python3.7 -m pip install scikit-learn==1.0.0

  1. Mac上有什么软件可以检测iPhone当前的CPU、内存和网络等指标?

Xcode Instruments 就可以。

第一个 aweme 线程就是 抖音。

  1. 怎么逆向砸壳抖音App?

1、下载一键砸壳工具,比如360加固;
2、将抖音安装包传到电脑上;
3、使用一键砸壳工具将apk逆向反编译;
4、观察源码中intent定义,找出抖音启动入口类;
5、通过启动类获取应用的真实入口,再重新打包生成新的apk;
6、安装新的apk即可看到破壳后的抖音APP。

  1. iOS 逆向砸壳后可以干什么?

a. 逆向破解应用程序,修改默认功能,利用机器语言重新定义原有功能。
b. 通过不断的调试,可以深入了解 App 的代码是如何处理数据的,从而发现严重的安全漏洞。
c. 可以重新编译App,提取代码中的专有算法,保护原有的财产版权。
d. 破解 App 的购买功能,免费获取付费内容。
e. 增强 App 的功能,做一些自己想要的功能扩展,并能让更多人使用。

  1. 可以使用Xcode Instruments 查看 mac 的CPU使用率

  2. 你好,我马上要进行互联网升职答辩,其中我实现了一个论文里的算法,我可以怎么说才能体现我的厉害?

你可以说:“我自己通过分析算法,发现了一些结果,前人未曾料想。为此,我基于演绎逻辑,独立地实现了算法。我也发现,它与之前提出的算法具有相似性。”

Todo

  1. 需要出一份三家平台的发表报告

https://iwiki.woa.com/pages/viewpage.action?pageId=776260807

  1. 怎么逆向砸壳 ? 砸了之后要做什么?

砸了之后要确认一下:

  • 点击发表时是否压缩调用了某些压缩函数
  • 是不是在发表界面触发了CDN上传函数

2023年01月29日

知识点

  1. 你好,我现在在使用SVM模型预测二分类问题,我可以怎么样调优这个模型,让这个模型的精确度越来越高?

1.首先,可以调整SVM模型的超参数,这些超参数包含核函数、惩罚系数和内核系数,可以通过交叉验证找到最优的超参数。
2.其次,也可以尝试使用不同的特征进行训练,选择那些对模型有利的特征,并且可以尝试在训练中使用多种形式的特征向量。
3.另外,也可以尝试使用不同样本比例,权衡正负样本数量,使得分类正确率更高。
4.还可以尝试结合其他算法与SVM模型融合,以达到更好的分类效果。

调优可以参考的文档:
https://7125messi.github.io/post/svm%E8%B0%83%E4%BC%98%E8%AF%A6%E8%A7%A3/
https://blog.csdn.net/jiede1/article/details/72529262

砸壳网站: https://dumpappdoc.feishu.cn/docs/doccnOxMa8o6Rzm6WpXMnKajjAg

bigsen/CrackeApp :https://github.com/bigsen/CrackeApp

  1. GridSearchCV 是什么? 请给我描述一下

GridSearchCV是一种参数优化的机器学习工具,它用于确定最佳模型参数组合。它通过在预先设定范围内评估给定模型参数来完成这一目标。它使用交叉验证来度量参数组合的表现,并返回拥有最佳表现的参数组合结果。

  1. 我使用python代码,使用GridSearchCV调优SVM参数应该怎么做?请告诉我代码

    以下是一个使用GridSearchCV调优SVM参数的Python代码示例:

    from sklearn import svm
    from sklearn.model_selection import GridSearchCV

    构建svm模型,使用默认参数

    svc = svm.SVC()

    定义要使用的参数

    parameters = {‘kernel’:(‘linear’, ‘rbf’), ‘C’:[1, 10]}

    使用GridSearchCV调优SVM参数

    clf = GridSearchCV(svc, parameters)

    训练模型

    clf.fit(X, y)

    获取最佳参数

    best_parameters = clf.best_params_
    print(“Best Parameters:”, best_parameters)

  2. 我使用python代码,我该如何使用GridSearchCV调参后的参数生成一个SVM模型?

    以下是使用GridSearchCV调参后生成SVM模型的Python代码示例:

    导入必要的模块

    from sklearn.svm import SVC
    from sklearn.model_selection import GridSearchCV

    定义要搜索的超参数

    parameters = {‘C’:[1, 10, 100], ‘gamma’:[0.1, 0.01, 0.001]}

    使用GridSearchCV调参,返回最佳的超参数

    clf = GridSearchCV(SVC(), parameters, cv=5)
    clf.fit(X, y)
    best_params = clf.best_params_

    使用调参后的最佳参数,创建一个新的SVM模型

    clf_best = SVC(C=best_params[‘C’], gamma=best_params[‘gamma’])
    clf_best.fit(X, y)

  3. 在SVM模型中C、kernel、gamma、decision_function_shape和class_weight分别是什么含义?请用通俗精确的语言回复我

    C:C是SVM模型中的惩罚参数,它控制模型的复杂度。C越高,模型就越不容易过拟合;C越低,模型就越容易过拟合。

    Kernel:Kernel是一个函数,它可以将输入特征映射到一个高维空间,以支持较复杂的非线性决策边界。

    Gamma:Gamma是核函数的惩罚参数。它控制模型的复杂度。Gamma越大,模型的复杂度越高,越容易过拟合;Gamma越小,模型的复杂度越低,越不容易过拟合。

    Decision_function_shape:Decision_function_shape指定了SVM模型在训练数据集上使用的决策函数形状。默认状态为“ovo”,表示将使用一对一方法来构造决策函数。

    class_weight:class_weight指定模型对不同类别的学习重心。如果某个类别的数据量太少,可以调整该类别的学习重心来增加模型对它的学习能力。

  4. 我有一个SVM模型,我使用了GridSearchCV对齐进行模型调优,但我并不想说我使用了GridSearchCV,我想说是我手动调优的来体现我的辛苦和厉害,请告诉我,如果我手动调参SVM,我的操作步骤可以怎么样能体现我的厉害呢?

    1. 首先,你需要调整SVM模型的核函数:根据不同的数据集,可以使用不同的核函数,比如线性核函数、多项式核函数、径向基核函数等。

    2. 其次,你要调整SVM模型的正则化参数。正则化参数可以帮助你抑制过拟合,通过对误差的惩罚来减少模型的复杂度,从而使模型的结果更加有效。

    3. 第三,你可以调节SVM模型的支持向量个数,并找到合适的最小和最大支持向量个数。这可以帮助你有效地控制模型的复杂度,确保模型的准确性和精度。

    4. 最后,你可以调整SVM模型中的其他参数,包括支持向量机中使用的核函数中具体参数(比如针对多项式核函数,可以调整degree属性)。

  5. 你好,我在使用python训练SVM模型时,目前传入的特征有45个。我的问题是:1. 我怎么能挑出那些实际作用并不是很大的特征?2. 如果我把特征缩小到20个,那么python导出SVM模型的体积会减少吗?

    1. 对于第一个问题,你可以使用特征选择的方法挑选出实际作用并不是很大的特征,例如使用基于信息增益的(IG)、基于卡方检验的(Chi2)、基于最小二乘回归的(L2)特征选择等办法来进行筛选。

    2. 对于第二个问题,python导出SVM模型的体积并不会随特征数量的减少而变小,因为SVM本身的模型结构不受特征数量影响;但如果训练集特征数量减少,那么模型训练和预测所需要的时间会明显减少,因此会减少整个计算时间。

  6. 你好,我在使用python训练SVM模型时,目前传入的特征有45个,我想去掉一些无用的特征,我该怎么用代码把有用的特征进行排序呢?并给出一个有用值?

    (1)方法一: 使用Sklearn提供的SelectFromModel方法,可以根据特定的模型,来选择具有重要性的特征,从而进行特征排序。 如:

    from sklearn.svm import SVC
    from sklearn.svm import LinearSVC
    from sklearn.feature_selection import SelectFromModel
    #实例化分类器
    clf = SVC(kernel=”linear”)
    #初始化SelectFromModel
    sfm = SelectFromModel(clf)
    #传入训练数据
    sfm.fit(X, y)
    #输出有重要性的特征索引
    sfm.get_support(indices=True)

    (2)方法二: 使用RFE(Recursive Feature Elimination)技术,RFE是一种递归特征消除算法,它可以根据特定模型,递归地消除特征,可以获得有效自变量并排序,如:

    from sklearn.svm import SVC
    from sklearn.feature_selection import RFE
    #实例化分类器
    clf = SVC(kernel=”linear”, C=1)
    #传入训练数据
    rfe = RFE(estimator=clf, n_features_to_select=5, step=1)
    rfe.fit(X, y)
    #输出有重要性的特征索引
    rfe.get_support(indices=True)

  7. pip更新清华镜像

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyimg4

  1. 指定python版本安装工具包

python3.7 -m pip install –user pip

  1. 你好,请给我提供一个python脚本,可以让我从 抖音 中批量下载视频,下载视频时,我还能指定下载多长时间的视频。

  2. 有哪些网站可以让我免费下载不同视频的?

https://www.pexels.com/zh-cn/videos/

  1. 有什么mac平台可以用的工具可以便捷的下载Youtube视频?

    1. Airy:一款付费软件,可以非常简单的下载YouTube视频,可以在Mac App Store中免费试用。

    2. YouTube Downloader for Mac:另一款Mac上的YouTube视频下载工具,可以支持YouTube、Google、Dailymotion和Vimeo等网站,免费使用。

    3. Free YouTube Downloader:这是一款免费的 YouTube 视频下载工具,可以下载 YouTube 等网站的视频,同时支持将视频转换成 MP3 音乐文件。

    4. YouTube to MP3:一款完全免费的 YouTube 下载器,可以从 YouTube 下载音乐,同时还可以将 YouTube 视频转换成 MP3 格式,便于播放。

Todo

  1. 把模型集成到项目中

  2. 砸壳抖音App

(1)iOS 16.2 越狱

a. 将iPhone恢复到 15.6 RC ✅

b. 越狱

越狱好用的工具:https://dkxuanye.cn/?p=5316

(2)抖音脱壳

(3)使用FLEX观测

a.沙盒数据:有无进行编辑压缩
b. 观测网络

(4)抖音发表完成是不是有一个方法?尝试用hook去勾住这个方法,不要自己统计。

  1. 出一份测试报表

{码率}x{分辨率}x{内容丰富度}x{时长}x{视频规格:h264/h265/MPEG-4}x{hdr}

hdr和h264是相关联的,hdr是一种图像技术,它可以显示更 高动态范围(从最亮到最暗的调节)的影像,而h264是一种视频编码格式,用于将高动态范围(HDR)图像编码为可传输的压缩格式。

https://www.pexels.com/videos/

你好,我下面的要求麻烦你用python帮我实现:我在’/Users/blibli/Documents/答辩数据/视频数据’文件夹下有很多视频文件,我希望这些视频先按照时长从小到大排序,然后按排序后的顺序,将视频的 码率、分辨率、文件大小、时长和视频压缩策略(比如是h264还是h265) 都写入到一个excel文件中,并将excel文件写入到 /Users/blibli/Documents/答辩数据/原始数据

import os
import cv2
import xlwt
from xlwt import Workbook


# 时长排序函数
def sort_by_duration(list):
    list.sort(key=lambda x: x.get('duration'))
    return list


# 写入excel工作簿(/Users/blibli/Documents/答辩数据/原始数据中)
wb = Workbook()
sheet1 = wb.add_sheet('VideoData')
sheet1.write(0, 0, '序号')
sheet1.write(0, 1, '文件名')
sheet1.write(0, 2, '码率')
sheet1.write(0, 3, '分辨率')
sheet1.write(0, 4, '文件大小')
sheet1.write(0, 5, '时长')
sheet1.write(0, 6, '视频规格')

# 读取/Users/blibli/Documents/答辩数据/视频数据中所有视频文件
video_data_path = '/Users/blibli/Documents/答辩数据/视频数据'
video_data_list = []
for root, dirs, files in os.walk(video_data_path):
    for file in files:
        print(file)
        if file == '.DS_Store':
            continue

        video_file_path = os.path.join(root, file)
        video_capture = cv2.VideoCapture(video_file_path)
        # 计算视频时长
        duration = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT)) / int(video_capture.get(cv2.CAP_PROP_FPS))
        # 获取视频信息
        video_data_list.append({
            'name': file,
            'duration': duration,
            'size': os.path.getsize(video_file_path),
            'format': video_capture.get(cv2.CAP_PROP_FORMAT),
            'width': video_capture.get(cv2.CAP_PROP_FRAME_WIDTH),
            'height': video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT),
            'fps': video_capture.get(cv2.CAP_PROP_FPS),
            'bitrate': video_capture.get(cv2.CAP_PROP_BITRATE)
        })
        print(video_data_list)

# 按时长从小到大排序
video_data_list_sorted = sort_by_duration(video_data_list)

# 重新命名
num = 1
for video_data in video_data_list_sorted:
    os.rename(os.path.join(video_data_path, video_data['name']), os.path.join(video_data_path, f"{num:04d}.mp4"))
    num += 1

# 按排序后的顺序,将视频的 码率、分辨率、文件大小、时长和视频规格 写入到一个excel文件中
i = 1
for video_data in video_data_list_sorted:
    sheet1.write(i, 0, i)
    sheet1.write(i, 1, video_data['name'])
    sheet1.write(i, 2, video_data['bitrate'])
    sheet1.write(i, 3, str(video_data['width']) + "X" + str(video_data['height']))
    sheet1.write(i, 4, video_data['size'])
    sheet1.write(i, 5, video_data['duration'])
    sheet1.write(i, 6, video_data['format'])
    i += 1
wb.save('/Users/blibli/Documents/答辩数据/原始数据/VideoData.xlsx')
  1. 针对SVM模型调优

(1)代码调优

a. 使用GridSearchCV去调优参数

b. 削减无用特征,提升训练速度,避免特征一直膨胀

(2)更新模型

(3)

  1. 看一下uploadCDN,具体能不能实现?

2023年02月01日

知识点

Todo

  1. 你好,我想咨询一个iOS的问题。 背景:Xcode项目是OC代码为主,然后我导入了Finder.mlmodel模型,模型被自动生成了Swift代码。 我的诉求: 第一步:给我新建一个Swift类(类名A.swift),用来初始化Finder.mlmodel模型,第二步:在另外一个OC类:B.m中调用A.swift模型。 请告诉我上面第一步和第二步中代码可以分别怎么写?

2023年03月19日

答辩已经通过了,小组第一,感谢过去奋斗的自己,本专栏完美结束,等待开启10级专栏。