Lin*_*Guo 8 python machine-learning deep-learning keras tensorflow
我是 Tensorflow 新手,正在尝试训练特定的深度学习神经网络。我正在使用 Tensorflow (2.11.0) 来获取深度神经网络模型,如下所述。我使用的数据也给出如下:
数据:
这是一些示例数据。为了方便起见,我们可以考虑数据中的 10 个样本。在这里,每个样本都有形状:(128,128)。
可以将以下代码视为示例训练数据。
x_train = np.random.rand(10, 128, 128, 1)
Run Code Online (Sandbox Code Playgroud)
归一化层:
normalizer = tf.keras.layers.Normalization(axis=-1)
normalizer.adapt(x_train)
Run Code Online (Sandbox Code Playgroud)
构建模型:
def build_and_compile_model(norm):
model = tf.keras.Sequential([
norm,
layers.Conv2D(128, 128, activation='relu'),
layers.Conv2D(3, 3, activation='relu'),
layers.Flatten(),
layers.Dense(units=32, activation='relu'),
layers.Dense(units=1)
])
model.compile(loss='mean_absolute_error', optimizer=tf.keras.optimizers.Adam(0.001))
return model
Run Code Online (Sandbox Code Playgroud)
当我做
dnn_model = build_and_compile_model(normalizer)
dnn_model.summary()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError: The channel dimension of the inputs should be defined. The input_shape received is (None, None, None, None), where axis -1 (0-based) is the channel dimension, which found to be `None`.
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
我试图从这个、这个、这个和这个中获得见解。但是,我还没有找到可行的解决方案。
我应该怎样做才能消除错误并使模型正常工作?
我将不胜感激任何帮助。
直接在归一化层中定义输入形状(或添加Input层),因为它无法直接推断:
import numpy as np
import tensorflow as tf
x_train = np.random.rand(10, 128, 128, 1)
normalizer = tf.keras.layers.Normalization(input_shape=[128, 128, 1], axis=-1)
normalizer.adapt(x_train)
def build_and_compile_model(norm):
model = tf.keras.Sequential([
norm,
tf.keras.layers.Conv2D(64, 64, activation='relu'),
tf.keras.layers.Conv2D(3, 3, activation='relu'),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(units=32, activation='relu'),
tf.keras.layers.Dense(units=1)
])
model.compile(loss='mean_absolute_error', optimizer=tf.keras.optimizers.Adam(0.001))
return model
dnn_model = build_and_compile_model(normalizer)
dnn_model.summary()
Run Code Online (Sandbox Code Playgroud)
此外,您的模型无法按原样工作,您在第一Conv2D层中使用内核大小为 128,然后在另一层Conv2D中使用内核大小为 3,但您的数据具有形状(10, 128, 128, 1)。我更改了它以使您的代码可执行。
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |