Tensorflow Fit以代码1退出,没有任何错误消息

时间:2019-08-16 04:25:34

标签: tensorflow keras python-3.6 tensorflow-datasets

我是tensorflow的新手。我想要做的是训练一个简单的神经网络来解决牛顿2问题,猜测给定质量和加速度值的力值。输入层由两个神经元组成,分别是质量和加速度值。输出层是力量。

该程序只是发出警告,打印一些我认为输出的数据,然后以代码1退出。我无法尝试任何方法来解决此问题。因为正如我之前所说,我是tensorflow的新手,所以没有错误消息。

代码如下:

   from tensorflow.keras.layers import Dense, Flatten
   from tensorflow.keras.models import Sequential
   import numpy as np
   import pickle


   X = pickle.load(open("Newton2_X.pickle", "rb"))
   y = pickle.load(open("Newton2_y.pickle", "rb"))

   model = Sequential()
   # model.add(Flatten())
   model.add(Dense(2, activation="relu"))
   model.add(Dense(128, activation="relu"))
   model.add(Dense(1, activation="softmax"))

   model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

   model.fit(X, y, epochs=3, validation_split=0.1, batch_size=100)

以下是泡菜文件: https://drive.google.com/drive/folders/1FkKmY4px8oQJkbHYb_Z4y4Lnb1EazkvP?usp=sharing

在这部分代码之后,我还有其他几行内容,使网络可以猜测新值和一些打印行。这些行不执行。实际上,我发现“问题”必须在model.fit(...)部分中。因为该行之后没有行被执行。

这是我从程序中得到的完整警告消息:

WARNING: Logging before flag parsing goes to stderr.
W0816 07:02:05.292823 17652 deprecation.py:506] From C:\Users\SABA\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\ops\init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor
6, 0.2142802901764338, 0.26114980919201514, 0.2451221454091551, 0.19920049739052853, ...

1 个答案:

答案 0 :(得分:1)

需要调整的几件事。

首先,我不认为数据是您认为的形状。你有:

launcher.db

X.shape # (45000, 2, 2, 1) 是包含90,000个元素的平面列表。

第二,您正在预测一个数字(所以是一个回归),但是您尝试使用“ sparse_categorical_crossentropy”作为损失函数,用于分类问题。

我可以通过简单地将数据切成我们所需的形状来运行您的代码,但是显然,由于我没有将正确的Xs和ys配对,因此它不会训练。您需要在数据中对其进行正确整理

from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.models import Sequential
import numpy as np
import pickle

### TODO - sort this out!
X = pickle.load(open("Newton2_X.pickle", "rb"))[:,0,:,0]
y = np.array(pickle.load(open("Newton2_y.pickle", "rb")))[:45000]
####

model = Sequential()
# model.add(Flatten())
model.add(Dense(2, activation="relu"))
model.add(Dense(128, activation="relu"))
model.add(Dense(1, activation="softmax"))

model.compile(optimizer='adam',
          loss='mse')

model.fit(X, y, epochs=3, validation_split=0.1, batch_size=100)