Dataframe 数据帧的神经网络综述
我们可以通过以下方式访问神经网络的摘要:Dataframe 数据帧的神经网络综述,dataframe,tensorflow,keras,neural-network,Dataframe,Tensorflow,Keras,Neural Network,我们可以通过以下方式访问神经网络的摘要: model.summary() 但是我们有没有办法把这个结果转换成一个数据帧,这样我们就可以比较不同模型的特性了 是的,您可以使用print\fn参数将输出保存为字符串,然后将其解析为数据帧: from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import re import pandas as pd model = Seq
model.summary()
但是我们有没有办法把这个结果转换成一个数据帧
,这样我们就可以比较不同模型的特性了
是的,您可以使用
print\fn
参数将输出保存为字符串,然后将其解析为数据帧:
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
我采用了@runDOSrun的答案,并对其进行了一些调整,使其更加全面,因为在您有多个连接的情况下,它无法正常工作
将熊猫作为pd导入
进口稀土
从tensorflow.keras.applications.inception\u resnet\u v2导入接收resnetv2
def清洁(x):
返回x.replace('[0][0]','').replace('(','').replace('),'').replace('[','').replace(']','')
def magic(x):
tmp=re.split(r'\s{1,}',clean(x))
返回tmp
输入_形=(540960,3)
模型=接收resnetv2(输入形状)
宽度=250
stringlist=[]
model.summary(宽度,print\u fn=lambda x:stringlist.append(x))
summ_string=“”.join(字符串列表)
splitstr1=f“={{{{width}}}”
splitstr2=f“{{{{{width}}”
tmptable=re.split(splitstr1,总和字符串)
header=re.split(splitstr2,tmptable[0])
header=re.split(r'\s{2,}',header[1])[:-1]
表=重新拆分(拆分str2,tmptable[1])
df=pd.DataFrame(列=标题)
对于索引,枚举(表)中的条目:
entry=re.split(r'\s{2,}',entry)[:-1]
df.loc[index]={header[0]:条目[0],
标题[1]:元组([int(e)表示clean中的e(条目[1])。拆分(',')[1:]),
标题[2]:int(条目[2]),
标题[3]:[clean(e)for e in entry[3:]]
df['layername',df['type']=zip(*df['Layer(type)')。地图(魔法))
df['kernels']=[e[-1:[0]表示df['Output Shape']]
提供以下示例输出:
这是一个非常棒的片段!谢谢你的帮助!