首页 > 解决方案 > 神经网络摘要到数据框

问题描述

我们可以通过以下方式访问神经网络的摘要

model.summary()

但是有什么办法可以把这个结果转换成dataframe,这样我们就可以比较不同模型的特征了吗?

在此处输入图像描述

标签: dataframetensorflowkerasneural-network

解决方案


是的,您可以通过使用print_fn参数将输出保存到字符串然后将其解析为 DataFrame 来实现:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import re
import pandas as pd

model = Sequential()
model.add(Dense(2, input_dim=1, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

stringlist = []
model.summary(print_fn=lambda x: stringlist.append(x))
summ_string = "\n".join(stringlist)
print(summ_string) # entire summary in a variable

table = stringlist[1:-4][1::2] # take every other element and remove appendix

new_table = []
for entry in table:
    entry = re.split(r'\s{2,}', entry)[:-1] # remove whitespace
    new_table.append(entry)

df = pd.DataFrame(new_table[1:], columns=new_table[0])
print(df.head())

输出:

      Layer (type) Output Shape Param #
0    dense (Dense)    (None, 2)       4
1  dense_1 (Dense)    (None, 1)       3

推荐阅读