keras plot_model函数画网络结构图,问号??改成None

Ubuntu找这个目录文件

anaconda3/envs/yourEnv/lib/python3.7/site-packages/tensorflow_core/python/keras/utils/vis_utils.py

Windows找这个目录文件

Anaconda\envs\yourEnv\Lib\site-packages\tensorflow\python\keras\utils\vis_utils.py

问题出在vis_utils.py文件中下面这个函数上面

def format_shape(shape):
  return str(shape).replace(str(None), '?')

直接改为:

def format_shape(shape):
  return str(shape).replace(str(None), 'None')

参考自:https://stackoverflow.com/questions/63101709/keras-plot-model-replace-the-question-mark-by-none-in-the-model-architecture

我将?改成了ABC,大家可以看看成果图:

 

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果不使用 `plot_model` 函数,可以使用 Keras 的 `summary` 函数打印出模型结构。修改代码如下: ``` import numpy as np import matplotlib.pyplot as plt from keras.models import Sequential from keras.layers import Dense, Flatten, Conv1D, MaxPooling1D # 生成正弦函数数据 x = np.linspace(0, 100, 1000) y = np.sin(2*x+1) + 3 # 将数据转换为卷积神经网络需要的格式 X = np.zeros((len(x), 10)) for i in range(len(x)): for j in range(10): X[i][j] = y[(i+j)%len(x)] X = np.reshape(X, (X.shape[0], X.shape[1], 1)) # 构建卷积神经网络模型 model = Sequential() model.add(Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=(10,1))) model.add(MaxPooling1D(pool_size=2)) model.add(Flatten()) model.add(Dense(100, activation='relu')) model.add(Dense(1, activation='linear')) # 打印模型结构 model.summary() # 编译模型 model.compile(loss='mse', optimizer='adam') # 训练模型并可视化损失函数 history = model.fit(X, y, epochs=100, batch_size=32, validation_split=0.2) loss = history.history['loss'] val_loss = history.history['val_loss'] epochs = range(1, len(loss)+1) plt.plot(epochs, loss, 'bo', label='Training loss') plt.plot(epochs, val_loss, 'b', label='Validation loss') plt.title('Training and validation loss') plt.xlabel('Epochs') plt.ylabel('Loss') plt.legend() plt.show() # 预测并可视化结果 y_pred = model.predict(X) plt.plot(x, y, label='true') plt.plot(x, y_pred, label='predict') plt.legend() plt.show() ``` 修改后的代码会打印出卷积神经网络模型的结构,包括每一层的输入形状、输出形状和参数数量等信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值