![](/img/trans.png)
[英]Is there a way to train a CNN model, save the weights of this CNN, and then use this weights to retrain this CNN for other train data?
[英]CNN Model unable to train
我正在尝试训练一个 CNN 模型来预测格式
array([ 0., 0., 0., 0., -1.], dtype=float32)
。
我的训练数据如下所示:
0 [[-1.0, -1.0, -1.0, -1.0, -1.0], [0.0, 0.0, 0....
1 [[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0....
2 [[0.0, 0.0, 0.0, -1.0, -1.0], [0.0, 0.0, 0.0, ...
3 [[-1.0, -1.0, -1.0, -1.0, -1.0], [-1.0, -1.0, ...
4 [[-1.0, -1.0, -1.0, -1.0, -1.0], [0.0, 0.0, 0....
...
15484 [[-1.0, -1.0, -1.0, -1.0, -1.0], [0.0, 2.0, 1....
15485 [[-1.0, -1.0, -1.0, -1.0, -1.0], [-1.0, -1.0, ...
15486 [[-1.0, -1.0, -1.0, -1.0, -1.0], [0.0, 2.0, 0....
15487 [[1.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0....
15488 [[-1.0, -1.0, -1.0, -1.0, -1.0], [-1.0, -1.0, ...
每行形状 (24,5) 看起来像这样:
array([[-1., -1., -1., -1., -1.],
[ 0., 0., 0., 0., 0.],
[ 0., 3., 0., 0., 1.],
[ 1., 0., 0., 0., 0.],
[ 0., 0., 0., 0., -1.],
[ 0., 1., 2., 0., 0.],
[ 0., 3., 0., 0., -1.],
[ 0., 1., 0., 0., -1.],
[ 0., 1., 0., 0., -1.],
[ 1., 0., 0., 0., 0.],
[ 1., 0., 0., 0., -1.],
[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., -1.],
[ 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., -1.],
[ 0., 0., 0., 0., -1.],
[ 0., 1., 0., 0., -1.],
[ 0., 1., 0., 0., 0.],
[ 0., 1., 0., 0., -1.],
[ 0., 0., 0., 0., -1.],
[ 0., 1., 0., 0., -1.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., -1.],
[ 1., 2., 0., 0., -1.]], dtype=float32)
我使用的模型如下所示:
model = tf.keras.Sequential(layers=[
tf.keras.layers.Conv2D(32,kernel_size = 3, activation=tf.nn.relu, input_shape=(28,28,1)),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Conv2D(32,kernel_size = 3, activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Conv2D(32,kernel_size = 5,strides=2,padding='same', activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Conv2D(64,kernel_size = 3, activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Conv2D(64,kernel_size = 3, activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Conv2D(64,kernel_size = 3, strides=2, padding='same', activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128,activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dense(1, activation=tf.nn.softmax)])
model.compile(optimizer=tf.keras.optimizers.Adam(0.1),
loss=tf.keras.losses.CategoricalCrossentropy(),
metrics=tf.keras.metrics.Accuracy())
我是该领域的新手,目前遇到以下错误:
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).
有人可以告诉我我在这里做错了什么吗? 我在训练数据上添加了一个tf.convert_to_tensor()
函数,但仍然出现相同的错误。
添加.astype("float32")
似乎也不起作用。
tf.convert_to_tensor()
函数实际上应该已经完成了。 像这样转换的玩具示例数组a_tensor = tf.convert_to_tensor(a, dtype=tf.int32)
将是 CNN 的有效输入, n
这样的数组的数组也是如此(然后shape=(n, 24, 5)
)。 您可以发布代码的最小工作示例,这样我们就可以检查语法......现在很难判断出了什么问题。
除了这两个小观察:您在 CNN 中的输入形状尚未显示适合您的数据的正确形状。 最后一个密集的 softmax 层也不是您提出的预测格式的样子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.