小编Nic*_*las的帖子

如何摆脱 theano.gof.compilelock?

我正在使用 joblib 库在我的多个 CPU 上一次运行多个 NN。这个想法是我想将最终预测作为所有不同 NN 预测的平均值。我在后端使用 keras 和 theano。

如果我设置了 n_job=1,我的代码就可以工作,但是对于 >1 的任何内容都失败了。

这是错误消息:

[Parallel(n_jobs=3)]: Using backend ThreadingBackend with 3 concurrent workers.
Using Theano backend.
WARNING (theano.gof.compilelock): Overriding existing lock by dead process '6088' (I am process '6032')
WARNING (theano.gof.compilelock): Overriding existing lock by dead process '6088' (I am process '6032')
Run Code Online (Sandbox Code Playgroud)

我使用的代码相当简单(它适用于 n_job=1)

from joblib import Parallel, delayed
result = Parallel(n_jobs=1,verbose=1, backend="threading")(delayed(myNNfunction)(arguments,i,X_train,Y_train,X_test,Y_test) for i in range(network))
Run Code Online (Sandbox Code Playgroud)

有关信息(我不知道这是否相关),这是我的 keras 参数:

os.environ['KERAS_BACKEND'] = 'theano'
os.environ["MKL_THREADING_LAYER"] = "GNU"
os.environ['MKL_NUM_THREADS'] = '3' …
Run Code Online (Sandbox Code Playgroud)

python locking theano keras

6
推荐指数
0
解决办法
1036
查看次数

每周对 python pandas 数据帧进行分组(从星期一开始)

我有一个包含每天值的数据框(参见下面的 df)。我想每周对“预测”字段进行分组,但将星期一作为一周的第一天。

目前我可以通过 pd.TimeGrouper('W') (见下面的 df_final )来完成它,但它从星期日开始对一周进行分组(见下面的 df_final )

import pandas as pd
data = [("W1","G1",1234,pd.to_datetime("2015-07-1"),8),
        ("W1","G1",1234,pd.to_datetime("2015-07-30"),2),
        ("W1","G1",1234,pd.to_datetime("2015-07-15"),2),
        ("W1","G1",1234,pd.to_datetime("2015-07-2"),4),
        ("W1","G2",2345,pd.to_datetime("2015-07-5"),5),
        ("W1","G2",2345,pd.to_datetime("2015-07-7"),1),
        ("W1","G2",2345,pd.to_datetime("2015-07-9"),1),
        ("W1","G2",2345,pd.to_datetime("2015-07-11"),3)]

labels = ["Site","Type","Product","Date","Forecast"]
df = pd.DataFrame(data,columns=labels).set_index(["Site","Type","Product","Date"])
df


                              Forecast
Site Type Product Date                
W1   G1   1234    2015-07-01         8
                  2015-07-30         2
                  2015-07-15         2
                  2015-07-02         4
     G2   2345    2015-07-05         5
                  2015-07-07         1
                  2015-07-09         1
                  2015-07-11         3



df_final = (df
     .reset_index()
     .set_index("Date")
     .groupby(["Site","Product",pd.TimeGrouper('W')])["Forecast"].sum()
     .astype(int)
     .reset_index())
df_final["DayOfWeek"] = df_final["Date"].dt.dayofweek
df_final

  Site  Product       Date  Forecast  DayOfWeek
0   W1     1234 2015-07-05        12          6
1 …
Run Code Online (Sandbox Code Playgroud)

python datetime pandas pandas-groupby

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

如何在一个Keras层中使用不同的激活功能?

我正在使用Python开发Keras,并且有一个神经网络(请参见下面的代码)。目前,它仅适用于ReLu激活。

出于实验原因,我想在ReLu上使用一些神经元,在softmax上使用一些(或其他激活功能)。例如,在具有20个神经元的层中,我希望ReLu拥有10个,Softmax具有10个。

我尝试了一些不同的方法,但始终无法获得输出。

你知道我该怎么做吗?

# - Libraries
from keras.layers import Dense
from keras.models import Sequential
from keras.callbacks import EarlyStopping
early_spotting_monitor = EarlyStopping(patience=2)
layers = 4
neurons = 20
act = "ReLu"

# - Create Neural Network
model = Sequential()
model.add(Dense(neurons,activation=act,input_dim=X_train.shape[1]))

layers -= 1
while layers > 0:
    model.add(Dense(neurons,activation=act))  
    layers -= 1
model.add(Dense(n_months))
model.compile(optimizer="adam",loss="mean_absolute_error")

model.fit(X_train,Y_train,validation_split=0.10,epochs=13,callbacks=[early_spotting_monitor])
Run Code Online (Sandbox Code Playgroud)

编辑:这是我现在的(工作)代码:

# - Libraries
from keras.callbacks import EarlyStopping
early_spotting_monitor = EarlyStopping(patience=2)
from keras.layers import Input, Dense
from keras.models import Model       
from keras.layers.merge import concatenate

# input …
Run Code Online (Sandbox Code Playgroud)

neural-network keras activation-function keras-layer

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

检查熊猫数据框是否已传递给函数

我有一个这样定义的函数:

def demand_cleaning(df=None, location, output,_input,tables):
Run Code Online (Sandbox Code Playgroud)

我想测试是否df通过(df是熊猫DataFrame

如果df没有通过,我想做类似的事情

if df is None:
    df = pd.read_pickle(tables + "Demand Raw")
Run Code Online (Sandbox Code Playgroud)

但是这个测试现在不起作用。我明白了

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)

python pandas python-typing

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