小编cod*_*joy的帖子

在 keras 中使用 conv2D 层时,在 tf.random.set_seed 中设置种子是否也设置了 glorot_uniform kernel_initializer 使用的种子?

我目前正在训练一个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?时如何定义该种子?

python reproducible-research random-seed keras tensorflow

6
推荐指数
1
解决办法
925
查看次数

Google Colab 使用 Transformers 和 PyTorch 微调 BERT Base Case 时出现间歇性“RuntimeError: CUDA out of memory”错误

我正在运行以下代码来微调 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)

python machine-learning pytorch google-colaboratory

5
推荐指数
1
解决办法
3588
查看次数

忽略...`__init__` 中有参数的层必须覆盖`get_config`

我正在使用以下类定义的残差单元训练卷积神经网络(根据 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)

创建类没有报错,创建模型架构(使用这个类)也没有报错: …

python deep-learning conv-neural-network keras tensorflow

3
推荐指数
1
解决办法
3075
查看次数

为什么在使用 Python 的 wordcloud 库时不会从词云中排除停用词?

我想在我的词云中排除“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?

python nlp stop-words word-cloud

2
推荐指数
1
解决办法
2258
查看次数