我的文件夹(5M +)中有很多图像文件。这些图像大小不同。我想将这些图像调整为128x128。
我在循环中使用以下函数在Python中使用OpenCV调整大小
def read_image(img_path):
# print(img_path)
img = cv2.imread(img_path)
img = cv2.resize(img, (128, 128))
return img
for file in tqdm(glob.glob('train-images//*.jpg')):
img = read_image(file)
img = cv2.imwrite(file, img)
Run Code Online (Sandbox Code Playgroud)
但是,这将需要7个多小时才能完成。我想知道是否有任何方法可以加快此过程。
我可以实现并行处理以有效地做到这dask一点吗?如果是这样,怎么可能。
我想培养与定制度量的LGB模式:f1_score与weighted平均水平.
我在这里浏览了lightgbm的高级示例,发现了自定义二进制错误函数的实现.我实现了类似的功能来返回f1_score,如下所示.
def f1_metric(preds, train_data):
labels = train_data.get_label()
return 'f1', f1_score(labels, preds, average='weighted'), True
Run Code Online (Sandbox Code Playgroud)
我试图通过传递feval参数来训练模型,f1_metric如下所示.
evals_results = {}
bst = lgb.train(params,
dtrain,
valid_sets= [dvalid],
valid_names=['valid'],
evals_result=evals_results,
num_boost_round=num_boost_round,
early_stopping_rounds=early_stopping_rounds,
verbose_eval=25,
feval=f1_metric)
Run Code Online (Sandbox Code Playgroud)
然后我就到了 ValueError: Found input variables with inconsistent numbers of samples:
训练集正在传递给函数而不是验证集.
如何配置以便传递验证集并返回f1_score.
如何BCEWithLogitsLoss在 keras 中实现并将其用作自定义损失函数,同时用作Tensorflow后端。
我已经使用了BCEWithLogitsLoss其中PyTorch定义的torch。
如何在 Keras 中实现相同的功能?
我有.h5一个 CNN 模型的权重文件 ( ) 的URL 。我想将该权重直接加载到 Python 文件并编译 keras 模型。如何才能做到这一点。?
有没有直接的方法,或者我应该下载重量文件并从磁盘加载它。?
我试图为二元分类任务制作一个神经网络模型。模型是这样的
LEARNING_RATE_INIT = 0.001
LEARNING_RATE_END = 0.0001
BATCH_SIZE = 20000
EPOCHS = 2
EMBEDDING_N = 50
DENSE_N = 1024
SPATIAL_DROPOUT_1D = 0.2
DROPOUT_1 = 0.2
DROPOUT_2 = 0.2
in_machine = Input(shape=[1], name='machine')
emb_machine = Embedding(max_machine, EMBEDDING_N)(in_machine)
in_windspeed = Input(shape=[1], name='windspeed')
emb_windspeed = Embedding(max_windspeed, EMBEDDING_N)(in_windspeed)
in_activepower = Input(shape=[1], name='activepower')
emb_activepower = Embedding(max_activepower, EMBEDDING_N)(in_activepower)
in_pitchangle = Input(shape=[1], name='pitchangle')
emb_pitchangle = Embedding(max_pitchangle, EMBEDDING_N)(in_pitchangle)
in_genspeed = Input(shape=[1], name='genspeed')
emb_genspeed = Embedding(max_genspeed, EMBEDDING_N)(in_genspeed)
in_temp = Input(shape=[1], name='temp')
emb_temp = Embedding(max_temp, EMBEDDING_N)(in_temp)
in_turbine = Input(shape=[1], name='turbine') …Run Code Online (Sandbox Code Playgroud) 我只是在Python 3中检查一些数据类型的大小,我观察到了这一点.
import sys
val = None
print(sys.getsizeof(val))
Run Code Online (Sandbox Code Playgroud)
输出16与预期一致.
我尝试制作1000个地点的列表,None我期望大小为16*1000 = 16000或更多.但我得到的结果是不同的.
import sys
val = [None]*1000
print(sys.getsizeof(val))
Run Code Online (Sandbox Code Playgroud)
输出是8064.几乎是我预期的一半.
这是什么原因.?为什么分配的内存较少.
我有一个如下所示的数据框
Timestamp x_1 x_2 x_3 x_4 x_5 x_6
2018-01-31 22:30:00 2.023844 2.477428 1.023026 1.035433 0.530817 0.576471
2018-02-01 00:00:00 0.198297 -0.012164 0.103245 -0.101643 0.087468 -0.096665
2018-02-01 01:30:00 0.130721 0.042116 0.200378 0.166665 0.263809 0.250849
2018-02-01 03:00:00 0.621256 1.130577 0.907597 1.659503 1.161939 1.966579
2018-02-01 04:30:00 1.399033 2.438298 1.521268 2.570770 1.555749 2.583903
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的数据帧,它只包含一个这样的列
vals
2.023844
2.477428
1.023026
1.035433
0.530817
0.576471
0.198297
-0.012164
0.103245
-0.101643
0.087468
-0.096665
0.130721
0.042116
0.200378
0.166665
0.263809
0.250849
Run Code Online (Sandbox Code Playgroud)
我必须获取每一行值(x_1到x_6)并将它们堆叠成一列.
是否有一种简单的方法可以在熊猫中进行,而不是乱搞数组和列表.
我想要一个时间戳列表,范围从00:00:00到23:45:00使用pandas date_range。
我尝试过这样
pd.date_range(start=pd.Timestamp('00:00:00'), end=pd.Timestamp('23:45:00'), freq='15T')
Run Code Online (Sandbox Code Playgroud)
即使我没有提供年,月和日期,我得到的输出也是这样
DatetimeIndex(['2018-09-14 00:00:00', '2018-09-14 00:15:00',
'2018-09-14 00:30:00', '2018-09-14 00:45:00',
'2018-09-14 01:00:00', '2018-09-14 01:15:00',
'2018-09-14 01:30:00', '2018-09-14 01:45:00',
'2018-09-14 02:00:00', '2018-09-14 02:15:00',
'2018-09-14 02:30:00', '2018-09-14 02:45:00',
'2018-09-14 03:00:00', '2018-09-14 03:15:00',
'2018-09-14 03:30:00', '2018-09-14 03:45:00',
'2018-09-14 04:00:00', '2018-09-14 04:15:00',
'2018-09-14 04:30:00', '2018-09-14 04:45:00',
'2018-09-14 05:00:00', '2018-09-14 05:15:00',
'2018-09-14 05:30:00', '2018-09-14 05:45:00',
'2018-09-14 06:00:00', '2018-09-14 06:15:00',
'2018-09-14 06:30:00', '2018-09-14 06:45:00',
'2018-09-14 07:00:00', '2018-09-14 07:15:00',
'2018-09-14 07:30:00', '2018-09-14 07:45:00',
'2018-09-14 08:00:00', '2018-09-14 …Run Code Online (Sandbox Code Playgroud) 我有这样的清单
['A', 'A', 'B', 'B', 'A+B', 'A+B', 'B', 'B', 'A']
我想将此列表转换为这样
[1, 1, 2, 2, 3, 3, 4, 4, 5]
我所做的是,我将从值开始,1当列表中的值发生变化时,我会将手头的值增加一。
这是我现在使用的代码,
counts = []
count = 1
for i in range(1, len(p)):
print(p[i-1], p[i])
if p[i-1] == p[i]:
counts.append(count)
else:
counts.append(count)
count += 1
if p[-2] == p[-1]:
counts.append(counts[-1])
else:
counts.append(counts[-1] + 1)
Run Code Online (Sandbox Code Playgroud)
如何在Python中有效地做到这一点?如果需要,我也可以使用numpy
我的仓库中有一个 git post-commit 钩子。有时我想跳过运行这个钩子。
要跳过预提交挂钩,我知道我可以在像这样提交时使用 --no-verify 标志
git commit -m "message" --no-verify
Run Code Online (Sandbox Code Playgroud)
但这并不是跳过提交后挂钩。
是否可以跳过提交后挂钩?如果是这样怎么办?