我目前正在训练一个convolutional neural network
使用这样conv2D layer
定义的:
conv1 = tf.keras.layers.Conv2D(filters=64, kernel_size=(3,3), padding='SAME', activation='relu')(inputs)
Run Code Online (Sandbox Code Playgroud)
我的理解是默认 kernel_initializerglorot_uniform
的默认种子为“none”:
tf.keras.layers.Conv2D(
filters, kernel_size, strides=(1, 1), padding='valid', data_format=None,
dilation_rate=(1, 1), activation=None, use_bias=True,
kernel_initializer='glorot_uniform', bias_initializer='zeros',
kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None,
kernel_constraint=None, bias_constraint=None, **kwargs
)
tf.compat.v1.keras.initializers.glorot_uniform(seed=None, dtype=tf.dtypes.float32)
Run Code Online (Sandbox Code Playgroud)
我正在尝试生成可重现的代码,并且已经按照此 StackOverflow 帖子设置了随机种子:
seed_num = 1
os.environ['PYTHONHASHSEED'] = '0'
np.random.seed(seed_num)
rn.seed(seed_num)
session_conf = tf.compat.v1.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=1)
tf.random.set_seed(seed_num)
sess = tf.compat.v1.Session(graph=tf.compat.v1.get_default_graph(), config=session_conf)
K.set_session(sess)
Run Code Online (Sandbox Code Playgroud)
tf.random.set_seed
种子号是否glorot_uniform
在 a 内使用conv2D layer
?如果没有,在定义conv2D layer
?时如何定义该种子?
我正在运行以下代码来微调 Google Colab 中的 BERT Base Cased 模型。有时代码第一次运行良好,没有错误。其他时候,相同的代码使用相同的数据,会导致“CUDA 内存不足”错误。以前,重新启动运行时或退出笔记本,返回笔记本,执行工厂运行时重启,然后重新运行代码可以成功运行,不会出现错误。刚才,我已经尝试了重新启动并重试 5 次,但每次都出现错误。
问题似乎不是我正在使用的数据和代码的组合,因为有时它可以正常工作而不会出现错误。所以这似乎与 Google Colab 运行时有关。
有谁知道为什么会发生这种情况,为什么它是间歇性的,和/或我能做些什么?
我正在使用 Huggingface 的transformers
库和PyTorch
.
导致错误的代码单元格:
# train the model
%%time
history = defaultdict(list)
for epoch in range(EPOCHS):
print(f'Epoch {epoch + 1}/{EPOCHS}')
print('-' * 10)
train_acc, train_loss = train_epoch(
model,
train_data_loader,
loss_fn,
optimizer,
device,
scheduler,
train_set_length
)
print(f'Train loss {train_loss} accuracy {train_acc}')
dev_acc, dev_loss = eval_model(
model,
dev_data_loader,
loss_fn,
device,
evaluation_set_length
)
print(f'Dev loss {dev_loss} accuracy {dev_acc}')
history['train_acc'].append(train_acc)
history['train_loss'].append(train_loss)
history['dev_acc'].append(dev_acc)
history['dev_loss'].append(dev_loss)
model_filename …
Run Code Online (Sandbox Code Playgroud) 我正在使用以下类定义的残差单元训练卷积神经网络(根据 Aurelien Geron 的“使用 Scikit-Learn、Keras 和 Tensorflow 进行机器学习动手”中的第 478 页)
class ResidualUnit(tf.keras.layers.Layer):
def __init__(self, filters, strides=1, activation="relu", **kwargs):
super().__init__(**kwargs)
self.activation = tf.keras.activations.get(activation)
self.main_layers = [
tf.keras.layers.Conv2D(filters, 3, strides=strides, padding="same", use_bias=False),
tf.keras.layers.BatchNormalization(),
self.activation,
tf.keras.layers.Conv2D(filters, 3, strides=1, padding="same", use_bias=False),
tf.keras.layers.BatchNormalization()]
self.skip_layers=[]
if strides > 1:
self.skip_layers = [
tf.keras.layers.Conv2D(filters, 1, strides=strides, padding="same", use_bias=False),
tf.keras.layers.BatchNormalization()]
def call(self, inputs):
Z = inputs
for layer in self.main_layers:
Z = layer(Z)
skip_Z = inputs
for layer in self.skip_layers:
skip_Z = layer(skip_Z)
return self.activation(Z + skip_Z)
Run Code Online (Sandbox Code Playgroud)
创建类没有报错,创建模型架构(使用这个类)也没有报错: …
我想在我的词云中排除“The”、“The”和“My”。我正在使用 python 库“wordcloud”,如下所示,并使用这 3 个额外的停用词更新 STOPWORDS 列表,但 wordcloud 仍然包含它们。我需要更改什么才能排除这三个词?
我导入的库是:
import numpy as np
import pandas as pd
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
我已经尝试在下面的 STOPWORDS 集中添加元素,但是,即使成功添加了单词,wordcloud 仍然显示我添加到 STOPWORDS 集中的 3 个单词:
len(STOPWORDS)
输出:192
然后我跑了:
STOPWORDS.add('The')
STOPWORDS.add('They')
STOPWORDS.add('My')
Run Code Online (Sandbox Code Playgroud)
然后我跑了:
len(STOPWORDS)
输出:195
我正在运行 python 版本 3.7.3
我知道我可以在运行 wordcloud 之前修改文本输入以删除 3 个单词(而不是尝试修改 WordCloud 的 STOPWORDS 集),但我想知道 WordCloud 是否存在错误,或者我是否没有正确更新/使用 STOPWORDS?