我刚刚开始玩Keras并开始制作自定义图层.但是,我对许多不同类型的图层感到困惑,这些图层的名称略有不同,但具有相同的功能.
例如,https://keras.io/layers/merge/和https://www.tensorflow.org/api_docs/python/tf/keras/backend/concatenate有三种不同形式的连接函数.
keras.layers.Concatenate(axis=-1)
keras.layers.concatenate(inputs, axis=-1)
tf.keras.backend.concatenate()
Run Code Online (Sandbox Code Playgroud)
我知道第二个用于功能API,但3之间有什么区别?文档似乎有点不清楚.
此外,对于第三个,我看到了一个代码,在下面执行此操作.连接后为什么必须有._keras_shape行?
# Concatenate the summed atom and bond features
atoms_bonds_features = K.concatenate([atoms, summed_bond_features], axis=-1)
# Compute fingerprint
atoms_bonds_features._keras_shape = (None, max_atoms, num_atom_features + num_bond_features)
Run Code Online (Sandbox Code Playgroud)
最后,在keras.layers下,似乎总共有2个重复.例如,Add()和add()等.
我正在对时间序列数据执行组件明智的回归。这基本上是在那里的,而不是倒退Ÿ对X 1,X 2,...,X ñ,我们会回归Ÿ对X 1只,对x和y 2只,...,并采取减少的总和回归平方残差最多,并将其添加为基础学习器。这被重复 M 次,这样最终模型是许多形式 y 与 x i(仅 1 个外生变量)的简单线性回归的总和,基本上是使用线性回归作为基础学习器的梯度提升。
问题是,由于我正在对时间序列数据执行滚动窗口回归,因此我必须进行 N × M × T 回归,这超过一百万个 OLS。虽然每个 OLS 都非常快,但在我性能较弱的笔记本电脑上运行需要几个小时。
目前,我正在使用statsmodels.OLS.fit()这样的方式来获取每个 y 的参数,而不是 x i线性回归。的z_matrix是数据矩阵和i表示第i个列片的回归。行数约为 100,z_matrix大小约为 100 × 500。
ols_model = sm.OLS(endog=endog, exog=self.z_matrix[:, i][..., None]).fit()
return ols_model.params, ols_model.ssr, ols_model.fittedvalues[..., None]
Run Code Online (Sandbox Code Playgroud)
我从 2016 年的上一篇文章中阅读了在 python 中计算许多回归的最快方法?使用重复调用 statsmodels 效率不高,我尝试了建议 numpy 的答案之一,但pinv不幸的是速度较慢:
# slower: 40sec vs 30sec for …Run Code Online (Sandbox Code Playgroud) 我最近开始学习张量流。
我不确定是否有区别
x = np.array([[1],[2],[3],[4],[5]])
dataset = tf.data.Dataset.from_tensor_slices(x)
ds.shuffle(buffer_size=4)
ds.batch(4)
Run Code Online (Sandbox Code Playgroud)
和
x = np.array([[1],[2],[3],[4],[5]])
dataset = tf.data.Dataset.from_tensor_slices(x)
ds.batch(4)
ds.shuffle(buffer_size=4)
Run Code Online (Sandbox Code Playgroud)
另外,我不确定为什么我不能使用
dataset = dataset.shuffle_batch(buffer_size=2,batch_size=BATCH_SIZE)
Run Code Online (Sandbox Code Playgroud)
因为它给出了错误
dataset = dataset.shuffle_batch(buffer_size=2,batch_size=BATCH_SIZE)
AttributeError: 'TensorSliceDataset' object has no attribute 'shuffle_batch'
Run Code Online (Sandbox Code Playgroud)
谢谢!
这个问题已经在这里讨论过,但还没有评论:https://github.com/scikit-learn/scikit-learn/issues/16473
我在 X 中有一些数字特征和分类特征。分类特征是一种热编码。所以我的管道类似于 sklearn 文档示例:
cat_proc_lin = make_pipeline(
SimpleImputer(missing_values=None,
strategy='constant',
fill_value='missing'),
OneHotEncoder(categories=categories)
)
num_proc_lin = make_pipeline(
SimpleImputer(strategy='mean'),
StandardScaler()
)
processor_lin = make_column_transformer(
(cat_proc_lin, cat_cols),
(num_proc_lin, num_cols),
remainder='passthrough')
lasso_pipeline = make_pipeline(processor_lin,
LassoCV())
rf_pipeline = make_pipeline(processor_nlin,
RandomForestRegressor(random_state=42))
gradient_pipeline = make_pipeline(
processor_nlin,
HistGradientBoostingRegressor(random_state=0))
estimators = [('Random Forest', rf_pipeline),
('Lasso', lasso_pipeline),
('Gradient Boosting', gradient_pipeline)]
stacking_regressor = StackingRegressor(estimators=estimators,
final_estimator=RidgeCV())
Run Code Online (Sandbox Code Playgroud)
但如果我更改 passthrough=True,它将引发 TypeError,因为 passthrough 给出原始 X 并跳过管道的预处理部分:
/usr/local/lib/python3.6/dist-packages/sklearn/model_selection/_validation.py:536: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set …Run Code Online (Sandbox Code Playgroud) python ×3
keras ×1
keras-layer ×1
numpy ×1
regression ×1
scikit-learn ×1
statsmodels ×1
tensorflow ×1