小编ojp*_*ojp的帖子

Google colab pro GPU 运行速度极慢

我正在 colab Pro GPU 上运行 Convnet。我在运行时选择了 GPU,并且可以确认 GPU 可用。我运行的网络与昨天晚上完全相同,但每个 epoch 大约需要 2 小时...昨晚每个 epoch 大约需要 3 分钟...根本没有任何变化。我有一种感觉 Colab 可能限制了我的 GPU 使用,但我不知道如何判断这是否是问题所在。GPU 速度是否会根据一天中的时间等而波动很大?以下是我打印的一些诊断信息,有谁知道我如何更深入地调查这种缓慢行为的根本原因是什么?

\n\n

我还尝试将 colab 中的加速器更改为“无”,并且我的网络速度与选择“GPU”时的速度相同,这意味着由于某种原因我不再在 GPU 上进行训练,或者资源受到严重限制。我使用的是 Tensorflow 2.1。

\n\n
gpu_info = !nvidia-smi\ngpu_info = \'\\n\'.join(gpu_info)\nif gpu_info.find(\'failed\') >= 0:\n  print(\'Select the Runtime \xe2\x86\x92 "Change runtime type" menu to enable a GPU accelerator, \')\n  print(\'and then re-execute this cell.\')\nelse:\n  print(gpu_info)\n\nSun Mar 22 11:33:14 2020       \n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 440.64.00    Driver Version: 418.67       CUDA Version: 10.1     |\n|-------------------------------+----------------------+----------------------+\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile …
Run Code Online (Sandbox Code Playgroud)

gpu machine-learning tensorflow google-colaboratory

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

使用 Lubridate 解析日期时出错。所有格式均无法解析。未找到格式

我正在为这件事抓狂。我正在尝试使用 lubridate 解析为 ymd_hms 格式。我最终会将这个二变量数据框合并为一个更大的数据框。

原始 csv 中的日期格式似乎相当明确(01.01.13 00:00),所以我不确定为什么会出现以下错误或如何解决它。

Warning message:
All formats failed to parse. No formats found. 
Run Code Online (Sandbox Code Playgroud)

我曾尝试在网上查找有关语言环境的信息,但并没有取得多大成功。

这就是我一直在运行的

tariff <- read.csv("tariffs.csv", stringsAsFactors = F, sep = ";")
colnames(tariff) <- c("DateTime", "Tariff")
tariff$DateTime <- lubridate::ymd_hms(tariff$DateTime)
Run Code Online (Sandbox Code Playgroud)
> head(tariff)
        DateTime Tariff
1 01.01.13 00:00 Normal
2 01.01.13 00:30 Normal
3 01.01.13 01:00 Normal
4 01.01.13 01:30 Normal
5 01.01.13 02:00 Normal
6 01.01.13 02:30 Normal

> tail(tariff)
            DateTime Tariff
17515 31.12.13 21:00 Normal
17516 31.12.13 21:30 Normal
17517 31.12.13 22:00 …
Run Code Online (Sandbox Code Playgroud)

datetime r time-series

4
推荐指数
1
解决办法
1万
查看次数

在facetplot上绘制水平线(seaborn relplot)

我用下面的代码绘制了以下图。我想创建一条横跨所有分面图的水平红色虚线以突出显示 200 以上的所有点,但是当我运行此命令时

plt.axhline(200, ls='--', linewidth=3, color='red')
Run Code Online (Sandbox Code Playgroud)

我只得到最后一个情节中的线条。我猜我需要遍历所有的图,但我不知道该怎么做。谢谢您的帮助。

在此输入图像描述

g = sns.relplot(x='hour', y="n",
                 col="w_day", hue="Zone",
                 kind="scatter", ci=95, data=df_1, col_order=col_order)

axes = g.axes.flatten()
axes[0].set_title("Monday")
axes[1].set_title("Tuesday")
axes[2].set_title("Wednesday")
axes[3].set_title("Thursday")
axes[4].set_title("Friday")
axes[5].set_title("Saturday")
axes[6].set_title("Sunday")

axes[0].set_ylabel("Hourly N")
for ax in axes:
    ax.set_xlabel("Hour")

g.fig.suptitle('', 
               weight='semibold', 
               y= 1.06, 
               size='x-large')

plt.axhline(200, ls='--', linewidth=3, color='red')


plt.margins(x=0)
plt.subplots_adjust(hspace=0, wspace=0)
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-3.x seaborn

4
推荐指数
1
解决办法
5603
查看次数

为多列绘制 seaborn catplots

我有一个包含 93 个特征和 9 个类标签的数据框。我想用各自的类标签绘制每个特征的值,但是,我想生成一个包含 93 个图的子图,每个图代表数据集中的一个特征。我可以制作一个情节,它看起来像这样:

sns.catplot(x="feat_1", y="target", data=train)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

现在我基本上想重复同样的事情,但是以刻面网格的形式重复 93 次。我尝试创建一个包含 5 列和 19 行的子图,然后循环遍历轴但失败了......感谢您的帮助,我的数据看起来像这样(93 个特征列和一个目标列):

    feat_1  feat_2  feat_3  feat_4  feat_5  feat_6  feat_7  feat_8  feat_9  feat_10 ... feat_85 feat_86 feat_87 feat_88 feat_89 feat_90 feat_91 feat_92 feat_93 target
id                                                                                  
32518   0   0   0   1   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   Class_6
31734   0   1   7   5   0   0   0   0   0   1   ... 0   0   0   1   2   0 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning matplotlib python-3.x seaborn

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

去除熊猫列中特定字符左侧的字符

我有以下数据:

key German
0   0:- Profile 1
1   1:- Archetype   Realist*in
2   2:- RIASEC Code:    R- Realistic
3   3:- Subline Deine Stärke? Du bleibst dir selber treu.
4   4:- Copy    Dein Erfolg basiert auf deiner praktischen Ver...
Run Code Online (Sandbox Code Playgroud)

在“键”列中,我想删除后面的数字和冒号破折号。此顺序始终相同(从左侧开始)。因此,对于第一行,我想删除“0:-”,而只保留“配置文件 1”。我正在努力寻找正确的正则表达式来做我想做的事。最初我尝试了以下方法:

df_json['key'] = df_json['key'].map(lambda x: x.strip(':- ')[1])
Run Code Online (Sandbox Code Playgroud)

但是,这种方法限制太多,因为该字段中可能有多个词。

我想使用pd.Series.str.replace(),但我无法找出正确的正则表达式来达到预期的结果。任何帮助将不胜感激。

regex python-3.x pandas

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

从日期时间熊猫中提取季节

我正在尝试从带有日期时间列的大型数据框中提取季节。这是我使用的代码:

def season_of_date(date_UTC):
    year = str(date_UTC.year)
    seasons = {'spring': pd.date_range(start= year +'-03-21 00:00:00', end=year + '-06-20 00:00:00'),
               'summer': pd.date_range(start= year + '-06-21 00:00:00', end= year + '-09-22 00:00:00'),
               'autumn': pd.date_range(start= year + '-09-23 00:00:00', end= year + '-12-20 00:00:00')}
    if date_UTC in seasons['spring']:
        return 'spring'
    if date_UTC in seasons['summer']:
        return 'summer'
    if date_UTC in seasons['autumn']:
        return 'autumn'
    else:
        return 'winter'

df['season'] = df.date_UTC.map(season_of_date)

Run Code Online (Sandbox Code Playgroud)

问题在于我不知道如何处理日期时间列中的小时分和秒,所以我最终得到的结果主要是冬天,除了时间为 00:00:00 的日期时间条目:

date_UTC    season
616602  2019-11-24 17:00:00 winter
792460  2019-06-18 13:00:00 winter
230088  2019-11-30 07:00:00 winter …
Run Code Online (Sandbox Code Playgroud)

python datetime python-3.x pandas

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

使用字典来键入一系列值

我有一个熊猫数据框,我想根据另一列的值在新列中创建类别。我可以通过这样做来解决我的基本问题:

range = {
    range(0, 5) : 'Below 5',
    range(6,10): 'between',
    range(11, 1000) : 'above'
}

df['range'] = df['value'].map(range)
Run Code Online (Sandbox Code Playgroud)

在最终的字典键中,我为 range 选择了一个较大的上限值,以确保它捕获我尝试映射的所有值。然而,这似乎是一个丑陋的黑客,我想知道如何在不指定上限的情况下概括这一点。IE。如果 > 10 :“以上”。

谢谢

python python-3.x pandas

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

分组唯一日期,并根据计算pandas创建一个新列

我刚刚从 R 转移到 Python 并且有一个关于 groupby 的问题。我有一个具有三个功能的数据框,如下所示:

date    Scaled  Name
3   2018-10-01 02:00:00 14.57   19245
4   2018-10-01 02:00:00 11.90   7245
5   2018-10-01 02:00:00 15.84   25245
6   2018-10-01 03:00:00 16.98   25245
7   2018-10-01 03:00:00 11.40   7245
8   2018-10-01 03:00:00 16.95   19245
9   2018-10-01 04:00:00 17.78   25245
10  2018-10-01 04:00:00 12.06   7245
11  2018-10-01 04:00:00 18.19   19245
12  2018-10-01 05:00:00 19.63   25245

Run Code Online (Sandbox Code Playgroud)

我在数据集中有大约 80 个唯一名称,因此有重复的日期。我想在数据集中创建一个新列,它是每个 Name 唯一的百分比,显示该特定 Name 的小时数与数据集中的总小时数范围相比的比例。我可以轻松地进行此计算,但我正在努力生成新列。计算将是这样的

hours = ((df['date'].max(axis=0) - df['date'].min(axis=0)).total_seconds())/3600

df['percentage'] = df['Name'].value_counts()/ hours

Run Code Online (Sandbox Code Playgroud)

python pandas

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