【问题标题】:Keras symbolic inputs/outputs do not implement __len__ ErrorKeras 符号输入/输出未实现 __len__ 错误
【发布时间】:2022-08-11 21:47:13
【问题描述】:

我想构建一个 AI 来解决给定环境中的优化问题,但出现以下错误

---------------------------------------------------------------------------
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的问题。但我不知道如何解决它。这是我的模型

!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()

在损失函数中使用输入和输出值会不会有问题? 我使用谷歌 Colab。

  • 错误似乎在您的RewardFn 中,请同时添加代码

标签: python tensorflow machine-learning keras deep-learning


【解决方案1】:

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

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

请检查tensorflowkeras 版本是否应与tested build configurations 一致。让我们知道问题是否仍然存在。

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2018-09-15
    • 2012-12-02
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多