【问题标题】:How can I convert this keras cnn model to pytorch version如何将此 keras cnn 模型转换为 pytorch 版本
【发布时间】:2020-05-27 01:58:24
【问题描述】:

这是我要转换为 pytorch 的示例 keras 代码。我的输入数据集是 10000*1*102(标签的二维)。数据集包括 10000 个样本。每个样本包含一行,包含 102 个特征。我正在考虑使用 1dcnn 进行回归。

PS:超参数(例如过滤器、kernel_size、步幅、填充)可以根据我的 10000*1*102 数据集进行调整。

model = Sequential()
model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(n_timesteps,n_features)))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(Dropout(0.5))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(n_outputs, activation='softmax'))

【问题讨论】:

标签: machine-learning keras artificial-intelligence pytorch conv-neural-network


【解决方案1】:

欢迎来到 pytorch。 :) 我真的很高兴您决定从 Keras 切换到 PyTorch。对我来说,更详细地了解 NN 的工作原理是重要的一步。如果您对代码有任何具体问题或它无法正常工作,请告诉我。

import torch.nn as nn
a0 = nn.Conv1D(n_timesteps, 64, 3)
a1 = nn.Relu()
b0 = nn.Conv1D(64, 64, 3)
b1 = nn.Relu()
c0 = torch.nn.Dropout(p=0.5)
d0 = nn.MaxPool1d(2)
e0 = nn.Flatten()
e1 = nn.Linear(32*n_timesteps,100)
e2 = nn.Relu()
e3 = nn.Linear(n_outputs)
f0 = nn.Softmax(dim=1)

model = nn.Sequential(a0,a1,b0,b1,c0,d0,e0,e1,e2,e3,f0)

【讨论】:

  • 感谢您的回答,这很有帮助。
  • 是否需要将其定义为包括init、forward在内的类?
  • Pytorch 支持这两种类型,这是一种函数式编程风格,与发布的答案风格相同。还有一种面向对象的风格,需要你扩展 torch.nn.Module 并声明 init 和 forward。
猜你喜欢
  • 2022-01-02
  • 2021-04-27
  • 1970-01-01
  • 2020-08-24
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
相关资源
最近更新 更多