上下文
我正在尝试编写一个涉及设置全局/操作级种子的主题的 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'
但我仍然没有得到相同的序列。
我的问题
我还应该尝试什么还是我在这里做错了什么?