首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将火炬MLP类转换为Tensorflow MLP类

将火炬MLP类转换为Tensorflow MLP类
EN

Stack Overflow用户
提问于 2022-01-27 17:31:18
回答 1查看 52关注 0票数 1

我有一个问题,那就是如何将毕火炬神经网络转化为Tensorflow神经网络。下面编写的TF类不起作用,我假设它的死是为了区别nn.Sequential和tf.keras.Sequential。

代码语言:javascript
复制
class FullyConnected(nn.Sequential):

"""
Fully connected multi-layer network with ELU activations.
"""

def __init__(self, sizes, final_activation=None):
    layers = []
    for in_size, out_size in zip(sizes, sizes[1:]):
        layers.append(nn.Linear(in_size, out_size))
        layers.append(nn.ELU())
    layers.pop(-1)
    if final_activation is not None:
        layers.append(final_activation)
    super().__init__(*layers) here




class FullyConnected(tf.keras.Sequential):
"""
Fully connected multi-layer network with ELU activations.
"""
def __init__(self, sizes, final_activation=None):
    layers = []
    for out_size in sizes[1:-1]:
        layers.append(Dense(units=out_size, activation='elu'))
    if final_activation is not None:
        layers.append(Dense(units=sizes[-1], activation='elu'))
    else:
        layers.append(Dense(units=sizes[-1]))
    super().__init__(*layers)

如果我尝试初始化网络,比如使用self.fc = FullyConnected(sizes=(sizes[:-1] + [self.dim * 2]))sizes = [1, 128, 128, 128, 1],那么在使用TF网络时,我会得到错误:TypeError: object.__init__() takes exactly one argument (the instance to initialize)

有人能帮忙吗?

非常感谢!!

EN

回答 1

Stack Overflow用户

发布于 2022-01-28 20:00:13

我构建了一个4层keras网络,输出一个二进制分类。唐似乎表现得更好。

代码语言:javascript
复制
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.metrics import classification_report,confusion_matrix
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.models import Model
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

batch_size=673
data = np.random.rand(batch_size, 25)
#for item in data:
#    print(item)
label = np.random.randint(0,2,(batch_size,1))
#print(data)
df=pd.DataFrame(data)
df2=pd.DataFrame(label,columns=["Target"])
df=pd.concat([df,df2],axis=1)
#print(df)

columns=[x for x in df.columns if x!="Target"]
X=df[columns]
y=df["Target"]


X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.3, random_state=42)
scaler = StandardScaler()
scaler.fit(X_train)
X_train=scaler.transform(X_train)
X_test=scaler.transform(X_test)

model= Sequential()

model.add(Dense(25, input_shape=(25,),activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

#model.compile(optimizer=Adam(0.01),loss='binary_crossentropy')
model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.001), metrics=['accuracy'])

model.summary()

history=model.fit(X_train, y_train,epochs = 100,verbose=0)

model.evaluate(X_test, y_test)

plt.plot(history.history['accuracy'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70883103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档