首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Keras符号输入/输出不实现__len__错误

Keras符号输入/输出不实现__len__错误
EN

Stack Overflow用户
提问于 2022-07-23 11:41:15
回答 1查看 295关注 0票数 0

我想要构建一个AI来解决给定环境中的优化问题,但是我得到了以下错误

代码语言:javascript
运行
复制
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-352-765c5782fe72> in <module>()
      1 model=Model(inputs=input_layer,outputs=output)
----> 2 model.compile(optimizer='adam',loss=-RewardFn,metrics=['acc'])
      3 model.summary()

1 frames
/usr/local/lib/python3.7/dist-packages/keras/engine/keras_tensor.py in __len__(self)
    219 
    220   def __len__(self):
--> 221     raise TypeError('Keras symbolic inputs/outputs do not '
    222                     'implement `__len__`. You may be '
    223                     'trying to pass Keras symbolic inputs/outputs '

TypeError: Keras symbolic inputs/outputs do not implement `__len__`. You may be trying to pass Keras symbolic inputs/outputs to a TF API that does not register dispatching, preventing Keras from automatically converting the API call to a lambda layer in the Functional Model. This error will also get raised if you try asserting a symbolic input/output directly.

我发现了这个错误,据说是tensorflow的问题。但我不知道怎么解决。这是我的模型

代码语言:javascript
运行
复制
!pip install keras-rl2
import pandas as pd
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from google.colab import files
import io
# %matplotlib inline
import seaborn as sns

sns.set(style='darkgrid')
uploaded=files.upload()
cols=['node1x','node2x','node3x','node4x','node1y','node2y','node3y','node4y','Rmin']
Dataset=pd.read_csv(io.StringIO(uploaded['DNNsamples.csv'].decode('utf-8')),names=cols,header=None)

Dataset.head(20)

from sklearn.model_selection import train_test_split
X_train,X_test=train_test_split(Dataset,test_size=0.2,random_state=42)

from tensorflow.keras.layers import Input,Dense,Activation,Dropout,Flatten
from tensorflow.keras.models import Model
------

input_layer=Input(shape=(Dataset.shape[1],))
dense_layer1=Dense(21,activation='relu')(input_layer)
dense_layer2=Dense(21,activation='relu')(dense_layer1)
dense_layer3=Dense(21,activation='relu')(dense_layer2)
dense_layer4=Dense(21,activation='relu')(dense_layer3)
dense_layer5=Dense(21,activation='relu')(dense_layer4)
dense_layer6=Dense(21,activation='relu')(dense_layer5)
output=Dense(outputss,activation='sigmoid')(dense_layer6)
-----
RewardFn=Ravg+Constraint1+Constraint2+Constraint3+Constraint4+Constraint5
tf.shape(RewardFn)

model=Model(inputs=input_layer,outputs=output)
model.compile(loss=-RewardFn,optimizer='adam',metrics=['acc'])
model.summary()

在损失函数中使用输入和输出值​​是否是一个问题?我用谷歌科拉布。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-11 13:47:13

您不需要单独安装Keras包。您可以从Keras中导入TensorFlow。另外,在导入输入时请提供正确的别名,如下所示。Inputtf.keras API的子模块,而不是tensorflow.keras.layers API的一部分。

代码语言:javascript
运行
复制
from tensorflow import keras
from tensorflow.keras import Input
from tensorflow.keras.layers import Dense,Activation,Dropout,Flatten

请检查tensorflowkeras版本应该按照这个经过测试的构建配置。如果这个问题仍然存在,请告诉我们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73090413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档