这是我的代码骨架:
def build_model(x, y):
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(1, activation='relu'))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(x, y)
return model
class MultiModel(object):
def __init__(self, x1, y1, x2, y2):
self.model1 = build_model(x1, y1)
self.model2 = build_model(x2, y2)
if __name__ == '__main__':
# code that builds x1, x2, y1, y2
mm = MultiModel(x1, y1, x2, y2) # How to save mm ?
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何保存包含多个 Keras 模型的mm对象。
Keras 内置的 save 方法只能保存 Keras 模型,因此在这种情况下无法使用。pickle模块无法保存_thread.RLock对象,因此它也无法使用。
也许可以使用 Keras save 方法独立保存每个模型,然后重新组合它们并将它们作为一个整体保存。但我不知道如何继续。
有任何想法吗 ?
当我使用Pandas DataFrame时,我有一些内存不一致.
这是我的代码框架:
import pandas as pd
import numpy as np
columns_dtype = {'A': np.int16, 'B': np.int8, ...}
df = pd.read_csv('my_file.csv', dtype=columns_dtype)
Run Code Online (Sandbox Code Playgroud)
这基本上只是在控制列数据类型的同时用pandas读取csv文件.但是,当我在寻找为我的程序分配多少内存时,这些信息似乎并不一致.
信息1:
df.info(memory_usage='deep')
Run Code Online (Sandbox Code Playgroud)
这给了: memory usage: 482.6 MB
信息2:
import dill, sys
sys.getsizeof(dill.dumps(df))
Run Code Online (Sandbox Code Playgroud)
这给了:( 506049782所以506 Mb)
信息3:
分配给我的程序的RAM是:1.1 GiB(或1.2 Gb)
其他信息(但我认为不相关):
my_file.csv的大小是888 Mb(ls -lh)
问题:
因为我只是将我的csv文件加载到Pandas DataFrame对象中,为什么我的程序需要超过1 Gb的RAM而对象大小约为0.5 Gb?
非常感谢