Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dataframe 数据帧的神经网络综述_Dataframe_Tensorflow_Keras_Neural Network - Fatal编程技术网

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']]
提供以下示例输出:


这是一个非常棒的片段!谢谢你的帮助!