我正在使用 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) 我有一个包含每天值的数据框(参见下面的 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开发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) 我有一个这样定义的函数:
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)