首先看这样一个神经网络代码:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
tf.random.set_seed(1234) # applied to achieve consistent results
model = Sequential(
[
Dense(25, activation = 'relu', name = "L1"),
Dense(15, activation = 'relu', name = "L2"),
Dense(1, activation = 'linear', name = 'L3')
]
)
model.compile(
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
optimizer=tf.keras.optimizers.Adam(0.01),
)
model.fit(X_train,y_train,epochs=200)
logit = model(X_train)
f_x = tf.nn.sigmoid(logit)
但是pycharm如下函数引用报错:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
Dense(25, activation = 'relu', name = "L1"),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
optimizer=tf.keras.optimizers.Adam(0.01)
找到的Sequential语句报错解决方法是中间加上"python.",然后使用models.Sequentia()和layers.Dense(),但是losses和optimizer还是显示找不到引用。
from tensorflow.python.keras import layers, models
因为在TensorFlow 2.0及以后的版本中,Keras已经被集成到TensorFlow中,成为了TensorFlow的一部分。因此,如果尝试从tensorflow.keras
导入可能会遇到问题,因为正确的导入方式有所变化。尤其TensorFlow 2.16.0及以上版本,此时Keras 3.0已经作为TensorFlow的一部分。
所以正确的导入方式是:
import tensorflow as tf
from keras import layers,models,losses,optimizers
model = models.Sequential(
[
layers.Dense(25, activation = 'relu', name = "L1"),
layers.Dense(15, activation = 'relu', name = "L2"),
layers.Dense(10, activation = 'linear', name = 'L3')
]
)
model.compile(loss=losses.SparseCategoricalCrossentropy(from_logits=True),
optimizer=optimizers.Adam(0.01),
)