Keras 的units到底是怎么样算出来的。


(jillbin) #1

Keras 的units到底是怎么样算出来的。我看有些是add(Dense(32)),有些是写64,但是不明白是怎么样得到来,我看资料说这是输出维度,但是输出维度不是根据输入维度算的吗?但是有些输入是(5,5),输出还是写32,不明白怎么样算出来的,请教一下大家


(胖大帅) #2

对于dense 和 RNN层来说,所谓输出维度其实就是指该层的隐含神经元cell个数。例如:我的输入是5×5的数组,add(Dense(32))即我指定该Dense层有32个全连接Cell,那么每个全连接Cell的输入为5×5数组,输出为1个数值,所以对于整个Dense层来说它的输出就是一个长32的向量了。不知我这样表述你能否明白。


(snowave17) #3

请问bigquant对数据标准化处理的函数或者方法是什么呢?谢谢


(Arthas) #4

对于stockranker来说,通过M.transform.v2接口将features全部转变成非负整数。
不同算法模型要求的数据处理方式不一样,BigQuant提供的都是原始数据, 用户可以根据所用模型自己对数据进行处理。
常用数据处理方式可以参照:数据标准化/归一化方法汇总


(jillbin) #5

大哥,还不是很明白,那到底这输出是怎么样选择啊,我看网上就说大于0,难道32,30或者29等我可以随便选择的吗?到底以什么标准化选择?


(Arthas) #6

简单讲units就是隐含层细胞的个数,原则上来讲确实正整数就可以,但是这个也不能随便选。因为隐含层细胞的数目越多,模型的参数就越多。对于LSTM模型,在隐含层这一层上,参数数目M与隐含层细胞的个数之间的关系大致为M =4× n^2 + 4n。units的值要根据样本的数量来确定,如果模型总的可调参数数目多余样本数的话就不太好了


(snowave17) #7

请问在 big quant 怎样剔除某一个时间段停牌的股票?


(Arthas) #8

行情数据这里有几个因子是看股票是否停牌的。


(snowave17) #9

试了 suspended这个因子, 但是好像没有用啊,比如想要16年7月-17年7月之间没有停过牌的股票列表,返回的列表里面依然有停牌的股票。。。


(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


(神龙斗士) #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]:
['000001.SZA', '000005.SZA', '000006.SZA', '000009.SZA', '000010.SZA']

(snowave17) #12

thanks !