上下文
我正在尝试写一个Kaggle内核,主题涉及设置全局/操作级种子。为此,我在不同的单元格中分别编写每个案例。但我遇到的问题是,我在之前的单元格中设置的种子会影响后续单元格的输出。
例如,看看下面描述其中一种情况的代码片段:
"""
Case:
Setup: When only operation level seed is set -
- Since operation level seed is set, the sequence will start from same number after restarts,
and sequence will be same
"""
import tensorflow as tf
print(tf.random.uniform([1], seed=1)) # generates 'A1'
print(tf.random.uniform([1], seed=1)) # generates 'A2'
print(tf.random.uniform([1], seed=1)) # generates 'A3'
print(tf.random.uniform([1], seed=1)) # generates 'A4'
如果我重新运行上面的代码(作为单独的python文件的一部分),我会得到相同的序列(如预期的那样)。
但是当我在Kaggle内核的单独单元格中重新运行相同的代码时,我得到了不同的序列。这可能是由于我必须在以前的单元格中设置全局/操作级种子。
“我试过什么?**
为了消除前面的单元格对当前单元格的影响,我使用了一些已经可用的技术来重新启动内核:
import IPython.display as display
import time
# Restart the cell
display.Javascript('Jupyter.notebook.kernel.restart()')
# Wait for the kernel to restart
time.sleep(20)
"""
Case:
Setup: When only operation level seed is set -
- Since operation level seed is set, the sequence will start from same number after restarts,
and sequence will be same
"""
import tensorflow as tf
print(tf.random.uniform([1], seed=1)) # generates 'A1'
print(tf.random.uniform([1], seed=1)) # generates 'A2'
print(tf.random.uniform([1], seed=1)) # generates 'A3'
print(tf.random.uniform([1], seed=1)) # generates 'A4'
或者这个:
from IPython.core.display import HTML
HTML("<script>Jupyter.notebook.kernel.restart()</script>")
"""
Case:
Setup: When only operation level seed is set -
- Since operation level seed is set, the sequence will start from same number after restarts,
and sequence will be same
"""
import tensorflow as tf
print(tf.random.uniform([1], seed=1)) # generates 'A1'
print(tf.random.uniform([1], seed=1)) # generates 'A2'
print(tf.random.uniform([1], seed=1)) # generates 'A3'
print(tf.random.uniform([1], seed=1)) # generates 'A4'
但我仍然没有得到相同的序列。
我的问题
我还应该尝试什么,还是我做错了什么?
1条答案
按热度按时间unguejic1#
我在Stack Overflow和Kaggle评论中尝试了一些关于使用javascript重新启动Kaggle内核的答案,但它们不适用于我的用例。
因此,我将我的代码片段上传到一个python文件中,并将此文件作为数据集上传,并使用以下命令在内核的单元格中独立运行python文件:
上述示例可在-https://www.kaggle.com/code/adeepak7/tensorflow-s-global-and-operation-level-seeds中找到
这是一种黑客,但我鼓励人们分享他们的方法/技巧。