我最近得到了一个分配,我需要将一个字典(每个键引用一个列表)放入酸洗形式.唯一的问题是我不知道什么是腌制形式.任何人都可以指出我在一些好资源的正确方向上帮助我学习这个概念吗?谢谢!
我创建了一些数据并将其存储了几次,如下所示:
with open('filename', 'a') as f:
pickle.dump(data, f)
Run Code Online (Sandbox Code Playgroud)
每次文件大小增加,但是当我打开文件时
with open('filename', 'rb') as f:
x = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)
我只能看到上次的数据.我怎样才能正确读取文件?
我有一个example.csv包含内容的文件
1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3
Run Code Online (Sandbox Code Playgroud)
我如何example.csv用Python 阅读?
同样,如果我有
data = [(1, "A towel,", 1.0),
(42, " it says, ", 2.0),
(1337, "is about the most ", -1),
(0, "massively useful thing ", 123),
(-2, "an interstellar hitchhiker can have.", 3)]
Run Code Online (Sandbox Code Playgroud)
如何data使用Python 写入CSV文件?
我在python中有一个一般的调试问题(如果重要的话,请使用pycharm IDE)
可以说我有由2个块组成的代码:
Code block 1 (takes very long to run)
Code block 2 (where I want to debug)
Run Code Online (Sandbox Code Playgroud)
有没有办法在运行代码块1的末尾保存当前变量,以便我可以“倒退”到那些变量状态并从那里调试,而不必重新运行整个脚本来重新计算那些变量?
所以我遇到了一个问题 - 我正在用Python编写游戏原型,使用Pygame,我想保存我的游戏.所有与游戏相关的数据都在某些类的三个实例中,我想将这三个实例保存到一个文件中.但是,我试过腌制这些实例,但它不起作用.相反,我得到"TypeError:不能pickle Surface对象".这是一个问题,因为我想存储Surface对象.
我可以使用任何其他类型的数据类型,对任何可能的酸洗方法持开放态度.重要的是这些实例被存储,然后可以检索它们的数据.那么我该怎么做才能克服这个问题呢?请记住,我不是一个非常有经验的程序员,一年前在我的业余时间学习过Python,虽然我正在慢慢学习C++,但我不能写很多其他语言.
我有一个文件hash_db.pickle,当我创建它时,我在上面保存了一本字典:
v = {hash_value:{"file name":file_name,"file size":file_size,"last scanned time":scanned_time}}
{123dfre345:{"file name":calc.pdf,"file size":234,"last scanned time":12:23 24/12/2013}}
{3gcdshj754:{"file name":star.pdf,"file size":10,"last scanned time":10:30 10/10/2013}}
Run Code Online (Sandbox Code Playgroud)
last scanned time所以如果我只想从文件中更改3gcdshj754
我怎么能那样做呢?
我想将 BeautifulSoup 对象保存到文件中。因此,我将其更改为字符串,然后将其写入文件。然后将其作为字符串读取后,我将字符串转换为 BeautifulSoup 对象。这在我的测试过程中会有所帮助,因为我正在抓取的数据是动态的。
url = "https://coinmarketcap.com/all/views/all/"
html = urlopen(url)
soup = BeautifulSoup(html,"lxml")
Run Code Online (Sandbox Code Playgroud)
像这样编写 soup 对象:
new_soup = str(soup)
with open("coin.txt", "w+") as f:
f.write(new_soup)
Run Code Online (Sandbox Code Playgroud)
产生这个错误:
UnicodeEncodeError: 'charmap' codec can't encode
characters in position 28127-28132: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
另外,如果我能够将其保存到文件中,我将如何读取作为 BeautifulSoup 对象返回的字符串?
我的问题很简单,但我在网上找不到明确的答案(到目前为止)。
在定义的训练周期数之后,我使用以下方法保存了使用 adam 优化器训练的 keras 模型的权重:
callback = tf.keras.callbacks.ModelCheckpoint(filepath=path, save_weights_only=True)
model.fit(X,y,callbacks=[callback])
Run Code Online (Sandbox Code Playgroud)
当我关闭 jupyter 后恢复训练时,我可以简单地使用:
model.load_weights(path)
Run Code Online (Sandbox Code Playgroud)
继续训练。
由于 Adam 依赖于 epoch 数(例如在学习率衰减的情况下),我想知道在与以前相同的条件下恢复训练的最简单方法。
按照 ibarrond 的回答,我编写了一个小的自定义回调。
optim = tf.keras.optimizers.Adam()
model.compile(optimizer=optim, loss='categorical_crossentropy',metrics=['accuracy'])
weight_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path, save_weights_only=True, verbose=1, save_best_only=False)
class optim_callback(tf.keras.callbacks.Callback):
'''Custom callback to save optimiser state'''
def on_epoch_end(self,epoch,logs=None):
optim_state = tf.keras.optimizers.Adam.get_config(optim)
with open(optim_state_pkl,'wb') as f_out:
pickle.dump(optim_state,f_out)
model.fit(X,y,callbacks=[weight_callback,optim_callback()])
Run Code Online (Sandbox Code Playgroud)
当我恢复训练时:
model.load_weights(checkpoint_path)
with open(optim_state_pkl,'rb') as f_out:
optim_state = pickle.load(f_out)
tf.keras.optimizers.Adam.from_config(optim_state)
Run Code Online (Sandbox Code Playgroud)
我只是想检查一下这是否正确。再次感谢!!
附录:在进一步阅读Adam的默认Keras 实现和原始 Adam 论文时,我认为默认 Adam 不依赖于纪元数,而仅依赖于迭代数。因此,这是不必要的。但是,对于希望跟踪其他优化器的任何人,该代码可能仍然有用。
python ×9
pickle ×4
adam ×1
csv ×1
debugging ×1
keras ×1
msgpack ×1
pygame ×1
python-2.7 ×1
tensorflow ×1