PaddlePaddle / PaddleHelix

Bio-Computing Platform Featuring Large-Scale Representation Learning and Multi-Task Deep Learning “螺旋桨”生物计算工具集
Apache License 2.0
806 stars 192 forks source link

怎样使用蛋白质预训练模型 #64

Closed hailong23-jin closed 3 years ago

hailong23-jin commented 3 years ago

我已经下载了蛋白质预训练的三个模型,Transformer、LSTM和ResNet。怎么样才能在代码中使用它们呢?能给一些Demo吗?比如说怎样才能利用预训练的模型获得给定蛋白质的预训练表征。

xiaoyao4573 commented 3 years ago

可以参考这里面的教程。 https://github.com/PaddlePaddle/PaddleHelix/blob/dev/tutorials/protein_pretrain_and_property_prediction_tutorial.ipynb

使用--init_model 参数指定预训练模型路径。 和模型预测中加载模型是类似的。

hailong23-jin commented 3 years ago

你好,这里的代码我之前看过,并且仔细阅读了相关接口的源码部分,但是我还是没有搞清楚预训练模型是怎样加载和起作用的。我希望通过预训练模型得到该蛋白质的表征表示,它应当是一个矩阵。于是我想应当有这样一个类(或者说神经网络),可以用预训练的参数去初始化这个类,然后通过给定这个类一个蛋白质序列的输入,例如“MVLSPADKTNVKAAWGKVGAHAGEYG”,然后它返回给我一个特征表示矩阵。但我在源码中并没有找到类似的实现。在上面代码的例子中,仅仅调用 exe.run(......)一行代码,我就直接得到了分类结果,而我想要的是中间的蛋白质表征部分,然后在这个基础上加一些自定义的操作。 例如:

model=PretrainModel(init_model_path)

protein_presentation=model.getProteinPresentation("MVLSPADKTNVKAAWGKVGAHAGEYG")

有类似这样的实现吗?

linxd5 commented 3 years ago

你好,这里的代码我之前看过,并且仔细阅读了相关接口的源码部分,但是我还是没有搞清楚预训练模型是怎样加载和起作用的。我希望通过预训练模型得到该蛋白质的表征表示,它应当是一个矩阵。于是我想应当有这样一个类(或者说神经网络),可以用预训练的参数去初始化这个类,然后通过给定这个类一个蛋白质序列的输入,例如“MVLSPADKTNVKAAWGKVGAHAGEYG”,然后它返回给我一个特征表示矩阵。但我在源码中并没有找到类似的实现。在上面代码的例子中,仅仅调用 exe.run(......)一行代码,我就直接得到了分类结果,而我想要的是中间的蛋白质表征部分,然后在这个基础上加一些自定义的操作。 例如:

model=PretrainModel(init_model_path)

protein_presentation=model.getProteinPresentation("MVLSPADKTNVKAAWGKVGAHAGEYG")

有类似这样的实现吗?

您好,你可以通过 https://github.com/PaddlePaddle/PaddleHelix/blob/dev/apps/pretrained_protein/tape/tape_model.py#L184,使用 hidden 或 pooled_hidden 作为蛋白质的表征,然后基于这个蛋白质表征再添加一些自定义操作。

hailong23-jin commented 3 years ago

你好,这里的代码我之前看过,并且仔细阅读了相关接口的源码部分,但是我还是没有搞清楚预训练模型是怎样加载和起作用的。我希望通过预训练模型得到该蛋白质的表征表示,它应当是一个矩阵。于是我想应当有这样一个类(或者说神经网络),可以用预训练的参数去初始化这个类,然后通过给定这个类一个蛋白质序列的输入,例如“MVLSPADKTNVKAAWGKVGAHAGEYG”,然后它返回给我一个特征表示矩阵。但我在源码中并没有找到类似的实现。在上面代码的例子中,仅仅调用 exe.run(......)一行代码,我就直接得到了分类结果,而我想要的是中间的蛋白质表征部分,然后在这个基础上加一些自定义的操作。 例如:

model=PretrainModel(init_model_path)

protein_presentation=model.getProteinPresentation("MVLSPADKTNVKAAWGKVGAHAGEYG")

有类似这样的实现吗?

您好,你可以通过 https://github.com/PaddlePaddle/PaddleHelix/blob/dev/apps/pretrained_protein/tape/tape_model.py#L184,使用 hidden 或 pooled_hidden 作为蛋白质的表征,然后基于这个蛋白质表征再添加一些自定义操作。

好的,看到了,非常感谢!

tiezhuge commented 2 years ago

你好,这里的代码我之前看过,并且仔细阅读了相关接口的源码部分,但是我还是没有搞清楚预训练模型是怎样加载和起作用的。我希望通过预训练模型得到该蛋白质的表征表示,它应当是一个矩阵。于是我想应当有这样一个类(或者说神经网络),可以用预训练的参数去初始化这个类,然后通过给定这个类一个蛋白质序列的输入,例如“MVLSPADKTNVKAAWGKVGAHAGEYG”,然后它返回给我一个特征表示矩阵。但我在源码中并没有找到类似的实现。在上面代码的例子中,仅仅调用 exe.run(......)一行代码,我就直接得到了分类结果,而我想要的是中间的蛋白质表征部分,然后在这个基础上加一些自定义的操作。 例如:

model=PretrainModel(init_model_path)

protein_presentation=model.getProteinPresentation("MVLSPADKTNVKAAWGKVGAHAGEYG")

有类似这样的实现吗?

您好,你可以通过 https://github.com/PaddlePaddle/PaddleHelix/blob/dev/apps/pretrained_protein/tape/tape_model.py#L184,使用 hidden 或 pooled_hidden 作为蛋白质的表征,然后基于这个蛋白质表征再添加一些自定义操作。

好的,看到了,非常感谢!

你好,这里的代码我之前看过,并且仔细阅读了相关接口的源码部分,但是我还是没有搞清楚预训练模型是怎样加载和起作用的。我希望通过预训练模型得到该蛋白质的表征表示,它应当是一个矩阵。于是我想应当有这样一个类(或者说神经网络),可以用预训练的参数去初始化这个类,然后通过给定这个类一个蛋白质序列的输入,例如“MVLSPADKTNVKAAWGKVGAHAGEYG”,然后它返回给我一个特征表示矩阵。但我在源码中并没有找到类似的实现。在上面代码的例子中,仅仅调用 exe.run(......)一行代码,我就直接得到了分类结果,而我想要的是中间的蛋白质表征部分,然后在这个基础上加一些自定义的操作。 例如:

model=PretrainModel(init_model_path)

protein_presentation=model.getProteinPresentation("MVLSPADKTNVKAAWGKVGAHAGEYG")

有类似这样的实现吗?

您好,你可以通过 https://github.com/PaddlePaddle/PaddleHelix/blob/dev/apps/pretrained_protein/tape/tape_model.py#L184,使用 hidden 或 pooled_hidden 作为蛋白质的表征,然后基于这个蛋白质表征再添加一些自定义操作。

好的,看到了,非常感谢!

您好,现在无法通过上述连接访问到pretrained_protein/tape/tape_model.py中的tape_model.py文件,请问该怎样寻找tape这一项目中的tape_model.py文件。期待您的答复!

tiezhuge commented 2 years ago

问题已解决,找到tape_model.py文件了