对于任何Keras层(Layer类),可有人解释如何理解之间的区别input_shape,units,dim,等?
例如,doc说明了units指定图层的输出形状.
在神经网络的图像下面hidden layer1有4个单位.这是否直接转换为对象的units属性Layer?或者units在Keras中,隐藏层中每个权重的形状是否等于单位数?
我使用KerasClassifier来训练分类器.
代码如下:
import numpy
from pandas import read_csv
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from keras.utils import np_utils
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import LabelEncoder
from sklearn.pipeline import Pipeline
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load dataset
dataframe = read_csv("iris.csv", header=None)
dataset = dataframe.values
X = dataset[:,0:4].astype(float)
Y = dataset[:,4]
# encode class values as integers
encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)
#print("encoded_Y") …Run Code Online (Sandbox Code Playgroud) 我input_shape错误地省略了 Keras 模型第一层中的 。最终我注意到了这一点并修复了它 \xe2\x80\x93 并且我的模型的性能急剧下降。
观察有 和没有 的模型结构input_shape,我发现性能更好的模型的输出形状为multiple。此外,用 绘制它plot_model显示各层之间没有连接:
在性能方面,我理解的模型(使用 input_shape)在我的测试代码(如下)的 10 个 epoch 后实现了 4.0513 (MSE) 的验证损失,而“奇怪”模型管理 1.3218 \xe2\x80\x93 和差异只会随着更多纪元而增加。
\n\n型号定义:
\n\nmodel = keras.Sequential()\nmodel.add(keras.layers.Dense(64, activation=tf.nn.relu, input_shape=(1001,)))\n# add or remove this ^^^^^^^^^^^^^^^^^^^\nmodel.add(keras.layers.Dropout(0.05))\n...\nRun Code Online (Sandbox Code Playgroud)\n\n(不用介意细节,这只是一个模型,展示了有和没有 input_shape 的性能差异)
\n\n那么性能更好的模型中发生了什么?什么是multiple?各层之间是如何真正连接的?我如何在指定的同时构建相同的模型input_shape?
完整脚本:
\n\nimport tensorflow as tf\nfrom tensorflow import keras\nimport numpy as np\nfrom collections import deque\nimport math, random\n\ndef func(x):\n return math.sin(x)*5 + math.sin(x*1.8)*4 …Run Code Online (Sandbox Code Playgroud)