Keras 的units到底是怎么样算出来的。我看有些是add(Dense(32)),有些是写64,但是不明白是怎么样得到来,我看资料说这是输出维度,但是输出维度不是根据输入维度算的吗?但是有些输入是(5,5),输出还是写32,不明白怎么样算出来的,请教一下大家
Keras 的units到底是怎么样算出来的
somebody
(胖大帅)
#2
对于dense 和 RNN层来说,所谓输出维度其实就是指该层的隐含神经元cell个数。例如:我的输入是5×5的数组,add(Dense(32))即我指定该Dense层有32个全连接Cell,那么每个全连接Cell的输入为5×5数组,输出为1个数值,所以对于整个Dense层来说它的输出就是一个长32的向量了。不知我这样表述你能否明白。
nsc
(Arthas)
#4
对于stockranker来说,通过M.transform.v2接口将features全部转变成非负整数。
不同算法模型要求的数据处理方式不一样,BigQuant提供的都是原始数据, 用户可以根据所用模型自己对数据进行处理。
常用数据处理方式可以参照:数据标准化/归一化方法汇总
nsc
(Arthas)
#6
简单讲units就是隐含层细胞的个数,原则上来讲确实正整数就可以,但是这个也不能随便选。因为隐含层细胞的数目越多,模型的参数就越多。对于LSTM模型,在隐含层这一层上,参数数目M与隐含层细胞的个数之间的关系大致为M =4× n^2 + 4n。units的值要根据样本的数量来确定,如果模型总的可调参数数目多余样本数的话就不太好了
nsc
(Arthas)
#10
一个可行的方法是:
instruments = D.instruments(start_date='2016-07-01', end_date='2017-07-01')
df = D.history_data(instruments, start_date='2016-07-01', end_date='2017-07-01', fields=['suspended'])
instruments_without_suspended = []
for instrument in list(set(df['instrument'])):
df0 = df[df.instrument==instrument]
if np.sum(df0['suspended']) == 0:
instruments_without_suspended.append(instrument)
若股票某天停牌,suspended返回True,否则False. 这个方法利用的是False+False=0;True+False=1 来判断股票是否在某段时间有停牌。
代码运行需要一些时间。貌似有一个groupby()函数可以加快,不过还不会用。。。因此是时候召唤大神了
@iQuant @jliang
jliang
(神龙斗士)
#11
克隆策略
In [29]:
instruments = D.instruments(start_date='2016-07-01', end_date='2017-07-01')
# 获取历史数据
history_df = D.history_data(instruments, start_date='2016-07-01', end_date='2017-07-01', fields=['suspended'])
In [30]:
# 按 instrument group,对于每一个股票的数据,判断是否停牌过
instrument_df = history_df.groupby('instrument').apply(lambda x: not np.any(x['suspended']))
In [31]:
not_suspended_instruments = list(instrument_df[instrument_df].index)
not_suspended_instruments[:5]
Out[31]: