仅仅出现在tf2.1中,在tf2.4中已经不存在该问题。

这个问题查询了很多教程都没有很好的解决,其中有一个比较有启发的解决方案是这样的。

https://blog.csdn.net/dldldl0/article/details/79089074

ValueError: The last dimension of the inputs to Dense should be defined. Found None. ppp2.shape: (10, ?)

这种情况是由于 tf.reshape ()时,设定大小时存在张量,而不是确切的常数: 如:tf.reshape (x,[-1,y.shape[0]]) ,有时因 y.shape[0],导致识别不了,这种情况,只需中途找个变量(转化为 int )过渡一下(v =int(y.shape[0])),然后再 tf.reshape (x,[-1,v]) 就可以了

再来看看笔者代码:

   def build_model():input_a = Input(shape=(28, 28,), name='input_1')input_b = Input(shape=(28, 28,), name="input_2")ra = Reshape((-1,), name="reshape")(input_a)rb = Reshape((-1,),name="reshape_1")(input_b)d1 = Dense(500,activation='relu', name="dense")d2 = Dense(10, activation="softmax", name="dense_1")hidden_a = d2(d1(ra))hidden_b = d2(d1(rb))distance = K.sqrt(K.sum(tf.square(hidden_a - hidden_b)+0.00001, axis=1))model = tf.keras.Model(inputs=[input_a, input_b], outputs=distance)return model

上面这段代码在tf24中可以正常运行,并且通过,但是在tf2.1中无法通过,会报错: The last dimension of the inputs to Dense should be defined. Found None.

而问题的关键就在于-1,这个需要运行时决定,所以为了解决这个报错,我们人工计算这个值。

def build_model():input_a = Input(shape=(28, 28,), name='input_1')input_b = Input(shape=(28, 28,), name="input_2")ra = Reshape((784,), name="reshape")(input_a)rb = Reshape((784,),name="reshape_1")(input_b)d1 = Dense(500,activation='relu', name="dense")d2 = Dense(10, activation="softmax", name="dense_1")hidden_a = d2(d1(ra))hidden_b = d2(d1(rb))# 注意,为防止梯度爆炸,对distance添加保护措施distance = K.sqrt(K.sum(tf.square(hidden_a - hidden_b)+0.00001, axis=1))model = tf.keras.Model(inputs=[input_a, input_b], outputs=distance)return model

即可

The last dimension of the inputs to `Dense` should be defined. Found `None`.相关推荐

  1. 【已修复】Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`

    Keras框架 我们需要记住的一件事情是,Dense层要求明确上一层输出的第二维度的值,而不能显示为None. 但是这种"明确"似乎并不能通过在Dense层指定input_shap ...

  2. tf keras Dense源码解析

    环境 package version tensorflow 2.3.0 keras 2.4.3 源码 class Dense(Layer):def __init__(self,units,activa ...

  3. tf 2.0 -- Dense --普通全连接神经网络层

    主要参数 units : 正整数,输出空间的维数:activation: 使用的激活函数.如果没有指定,则没有使用激活函数,即线性激活函数 f(x) = x:use_bias: 是否使用偏置的标志:k ...

  4. 二、TensorFlow2.x 基于图像的分类

    本文使用tf.keras对服装.运动鞋图像进行分类,训练一个神经网络模型.tf.keras是TensorFlow中用来构建和训练模型的高级API.详细内容会在下面实际操作中展开介绍,一起来看看吧.关注 ...

  5. 用卷积对心音进行分类的总结1

    一:所用的神经网络--cnn 1;心音数据特点:是1维的 2:用到的卷积,池化层等也是1d 的(用法和2d的差不多,只是输入是3D的[batch,n_w,n_c],相对于2d少了高度n_h):如下:t ...

  6. 深入浅出TensorFlow2函数——tf.keras.layers.Dense

    分类目录:<深入浅出TensorFlow2函数>总目录 tf.keras.layers.Dense实现操作:output = activation(dot(input, kernel) + ...

  7. 使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!...

    ssl payload取1024字节,然后使用VAE检测异常的ssl流. 代码如下: from sklearn.model_selection import train_test_split from ...

  8. Keras functional API快速入门

    2019独角兽企业重金招聘Python工程师标准>>> Keras functional API快速入门 The Keras functional API is the way to ...

  9. Keras: 多输入及混合数据输入的神经网络模型

    目录 摘要 正文 什么是混合数据? Keras如何接受多个输入? 房价数据集 获取房价数据集 项目结构 加载数值和分类数据 加载图像数据集 定义多层感知器(MLP)和卷积神经网络(CNN) 使用Ker ...

最新文章

  1. 见了很久没见的高中同学,真好
  2. 去掉BootStrap的错误弹框信息
  3. upload Fiori application to ABAP server via report /UI5/UI5_REPOSITORY_LOAD
  4. stack java实现_java实现stack
  5. 教程-Delphi资源文件(全面分析于使用)
  6. App开发流程之图像处理工具类
  7. ThreadPoolExecutor 的三种提交任务方式
  8. 【听说有人想转码】入门----凯撒密码(密文解密,偏移)
  9. 最适合人工智能的编程语言:JAVA人工智能程序编程
  10. python网页制作web_python web麻瓜编程
  11. 基于 Direct3D 电子海图区域绘制方法
  12. 服务器远程关机软件,实现远程关机需要哪些步骤?向日葵怎么实现远程关机控制?...
  13. 前端jq实现视频跟图片一起混播
  14. 数组按照字母顺序排序
  15. 寻梦港家政上门服务小程序微擎
  16. 如何降低开关电源空载损耗
  17. 名帖81 苏轼 楷书《祭黄几道文卷》
  18. ffmpeg 实现 视频与gif互转
  19. react手机端项目注意点,ant design-mobile框架
  20. 171002 逆向-Reversing.kr(AutoHotKey)

热门文章

  1. 亚马逊EC2使用账号密码登录
  2. 如何向 Windows 7 镜像中添加 USB3.0 驱动
  3. SpringSecurity-基于微服务的认证与权限访问
  4. Caffe源码解析(一) —— caffe.proto
  5. Strategy (策略)模式
  6. 图片社交php,图像社交时代
  7. java读pdf一行_java读与pdf白件的时分呈现非常
  8. 1.1.Perl环境安装-Windows下环境安装
  9. 刷新页面,js实现文章浏览量自动更新
  10. 洛谷P4683 [IOI2008] Type Printer 题解