由于我只有AMD A10-7850 APU,而且没有足够的资金用于购买价值800美元至1200美元的NVIDIA显卡,我试图通过我拥有的资源来实现,以便通过tensorflow/keras加速深度学习.
最初,我使用了Tensorflow的预编译版本.InceptionV3需要大约1000-1200秒来计算1个纪元.它一直很缓慢.
为了加快计算速度,我首先使用优化器(使用AVX和SSE4指令)自行编译Tensorflow.这导致计算时间减少约40%.上面执行的相同计算现在只需要大约600秒来计算.它几乎可以忍受 - 有点像你可以看油漆干.
我正在寻找进一步减少计算时间的方法.我只有一个集成的AMD显卡,它是APU的一部分.(如何)(C/c)我利用这个资源来进一步加速计算?
更一般地说,让我们说有其他人有类似的货币限制和英特尔设置.没有分立的NVIDIA显卡的人如何利用他们的集成显卡芯片或其他非NVIDIA设置来实现比仅CPU性能更快的速度?那可能吗?为什么/为什么不呢?要实现这一目标需要做些什么?或者这可能在不久的将来(2-6个月)?怎么样?
在进行迁移学习时,我首先将图像输入 VGG16 网络的底层。我正在使用生成器函数。
datagen = ImageDataGenerator(1./255)
generator = datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size = 32,
class_mode=None,
shuffle=False
)
model.predict_generator(generator, nb_train_samples)
Run Code Online (Sandbox Code Playgroud)
我将类模式设置为无,因为我只想要数据输出。我设置 shuffle = false,因为我想稍后在此处提供预测的特征,并将它们与地面真实类别变量进行匹配:
train_data = np.lead(open(file_name, 'rb'))
train_labels = np.array([0] * NUMBER_OF_ITEMS_FOR_ITEM1 +
[1] * NUMBER_OF_ITEMS_FOR_ITEM2 +...
[n-1] * NUMBER_OF_ITEMS_FOR_ITEMN
Run Code Online (Sandbox Code Playgroud)
这里的问题是我不知道文件的读取顺序。我怎样才能找到它?或者更好的是,我怎样才能避免猜测正确的顺序?我之所以这么问,是因为我几乎可以肯定,低预测精度与标签不匹配有关。
我有下表:
Item number | crit_A | crit_B|
------------|--------|-------|
1 | 100 | 20 |
1 | 10 | 100 |
1 | 50 | 50 |
2 | 10 | 100 |
2 | 90 | 10 |
2 | 90 | 10 |
Run Code Online (Sandbox Code Playgroud)
我想要一个熊猫数据框操作只返回第一行和第五行。这对应于给定项目的 crit_A 为最大值的行。
Item number | crit_A | crit_B|
------------|--------|-------|
1 | 100 | 20 |
2 | 90 | 10 |
Run Code Online (Sandbox Code Playgroud)
注意:当 crit_A 对给定项目有多个相等的值时,我只需要返回一个项目。
以下不是我要找的:
res_82_df.groupby(['Item number']).max()
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它会按项目编号分组但返回所有列的最大值。另请注意:我可以查找任意阈值并执行查询语句。但这种方法也不够稳健,因为我总是需要查看数据并做出价值判断。
我如何有效地完成这项工作?
注意:我的问题确实是上面链接的问题的重复。不过,这里的答案非常独特且简洁得多,并且按照我的要求执行。
我知道以下问题:
1.)如何使用熊猫基于多个字符串索引拆分列? 2)如何将一列中的文本分成多行?
我想将它们分成几个新列。假设我有一个看起来像这样的数据框:
id | string
-----------------------------
1 | astring, isa, string
2 | another, string, la
3 | 123, 232, another
Run Code Online (Sandbox Code Playgroud)
我知道使用:
df['string'].str.split(',')
Run Code Online (Sandbox Code Playgroud)
我可以分割一个字符串。但是,下一步,我想像这样有效地将拆分后的字符串放入新列中:
id | string_1 | string_2 | string_3
-----------------|---------------------
1 | astring | isa | string
2 | another | string | la
3 | 123 | 232 | another
---------------------------------------
Run Code Online (Sandbox Code Playgroud)
我可以例如这样做:
for index, row in df.iterrows():
i = 0
for item in row['string'].split():
df.set_values(index, 'string_{0}'.format(i), item)
i = i + 1
Run Code Online (Sandbox Code Playgroud)
但是,如何才能更优雅地达到相同的结果呢?