我正在研究加州房价问题的示例项目,并在训练模型时出现上述错误。
读取以下数据后:
Head:
Open Close High Low Volume volume_adi volume_obv volume_obvm ... momentum_stoch momentum_stoch_signal momentum_wr momentum_ao others_dr others_dlr others_cr nextClose
0 118.940002 118.950996 119.015999 118.926003 3468.199951 -1468.002197 0.000000 0.000000 ... 27.777779 27.777779 -72.222221 0.000000 14.749734 0.000000 0.000000 118.948997
1 118.954002 118.959000 118.974998 118.892998 3083.300049 1139.846680 3083.300049 -8.533334 ... 53.658535 35.663956 -46.341465 0.000000 0.008407 0.008407 0.006725 118.975998
2 118.966003 118.975998 118.990997 118.922997 2914.600098 3508.808105 2914.600098 722.250000 ... 67.479675 48.897923 -32.520325 0.000000 0.014291 0.014290 0.021017 118.985001
3 118.992996 118.985001 119.000000 118.967003 3088.800049 1909.547119 …Run Code Online (Sandbox Code Playgroud) 我正在使用神经网络对文本进行分类,训练数据的标签是0或1(即二元分类)。它在训练和评估过程中效果很好,但预测输出是浮点值而不是整数0或1。我怎样才能总是得到整数结果?我需要手动转换它们或更改网络参数吗?
model = Sequential()
e = Embedding(vocab_size, embedding_dim, weights=[embedding_matrix],
input_length=max_length, trainable=False)
model.add(e)
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
# compile
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['acc'])
print(model.summary())
# fit
model.fit(padded_docs, labels, epochs=5, verbose=2)
# eval
loss, accuracy = model.evaluate(padded_docs, labels, verbose=0)
print('Accuracy: %f' % (accuracy*100))
# predict
result = model.predict(padded_docs_test, verbose=2)
Run Code Online (Sandbox Code Playgroud) 通常,当使用 Keras 训练深度神经网络时,训练准确性会在单批次训练期间提高。
就像这样,
2019-08-03 13:33:22 PST10/189 [>.............................] - ETA: 9s - loss: 0.6919 - acc: 0.8000
2019-08-03 13:33:22 PST20/189 [==>...........................] - ETA: 4s - loss: 0.6905 - acc: 0.9000
2019-08-03 13:33:22 PST40/189 [=====>........................] - ETA: 2s - loss: 0.6879 - acc: 0.9500
2019-08-03 13:33:22 PST60/189 [========>.....................] - ETA: 1s - loss: 0.6852 - acc: 0.9667
2019-08-03 13:33:22 PST80/189 [===========>..................] - ETA: 1s - loss: 0.6821 - acc: 0.9750
2019-08-03 13:33:22 PST90/189 [=============>................] - ETA: 1s - loss: 0.6806 - …Run Code Online (Sandbox Code Playgroud) 我有这个依赖项列表:
absl-py==0.7.0
bleach==1.5.0
click==6.7
cycler==0.10.0
decorator==4.2.1
futures==3.1.1
h5py==2.7.1
html5lib==0.9999999
imageio==2.2.0
Keras==2.1.5
Markdown==2.6.11
matplotlib==3.1.1
networkx==2.1
numpy==1.16.0
Pillow==5.0.0
pip-autoremove==0.9.0
protobuf==3.7
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.3
PyWavelets==0.5.2
PyYAML==3.12
scikit-image==0.13.1
scipy==1.1.0
six==1.12.0
tensorflow-gpu
tensorflow-tensorboard==1.5.1
tqdm==4.19.5
Werkzeug==0.15
Run Code Online (Sandbox Code Playgroud)
我有这些错误:
错误:tensorflow 1.15.0 要求tensorboard<1.16.0,>=1.15.0,但您将拥有不兼容的tensorboard 2.0.0。
错误:tensorflow 1.15.0 要求tensorflow-estimator==1.15.1,但您将拥有不兼容的tensorflow-estimator 2.0.1。
错误:datascience 0.10.6 要求 folium==0.2.1,但您将拥有不兼容的 folium 0.8.3。
错误:albumentations 0.1.12 要求 imgaug<0.2.7,>=0.2.5,但您将拥有不兼容的 imgaug 0.2.9。
解决办法是什么?我应该使用外部工具来解决这个依赖问题吗?
假设我有一个矩阵A和两个x,y适当维度的向量。我想计算点积x' * A * y,其中x'表示转置。这应该会产生一个标量。
Tensorflow中有方便的API函数来做到这一点吗?
(请注意,我使用的是 Tensorflow 2)。
我按照本指南学习使用 CNN 进行图像分类,并将此代码实现到我的数据集中:
https://www.tensorflow.org/tutorials/images/classification
train_image_generator = ImageDataGenerator(rescale=1. / 255) # Generator for our training data
validation_image_generator = ImageDataGenerator(rescale=1. / 255) # Generator for our validation data
train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size,
directory=train_img_folder,
shuffle=True,
target_size=(IMG_HEIGHT, IMG_WIDTH),
class_mode='categorical',
color_mode='grayscale')
val_data_gen = validation_image_generator.flow_from_directory(batch_size=batch_size,
directory=valid_img_folder,
target_size=(IMG_HEIGHT, IMG_WIDTH),
class_mode='categorical',
color_mode='grayscale'
)
model = Sequential([
Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH, 1)),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(64, 3, padding='same', activation='relu'),
MaxPooling2D(),
Flatten(),
Dense(512, activation='relu'),
Dense(3, activation='softmax')
])
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
history = model.fit_generator(
train_data_gen,
steps_per_epoch=total_train_value // …Run Code Online (Sandbox Code Playgroud) 我正在使用带有新功能 API 的 Keras 神经网络的 one-hot 编码。我遇到了如下所示的错误:
Failed to find data adapter that can handle input: (<class 'list'> containing values of types {'(<class \'list\'> containing values of types {\'(<class \\\'list\\\'> containing values of types {\\\'(<class \\\\\\\'list\\\\\\\'> containing values of types {"<class \\\\\\\'int\\\\\\\'>"})\\\'})\'})'}), (<class 'dict'> containing {"<class 'str'>"} keys and {'(<class \'list\'> containing values of types {\'(<class \\\'list\\\'> containing values of types {"<class \\\'int\\\'>"})\'})'} values)
Run Code Online (Sandbox Code Playgroud)
如果我没有记错的话,我相信网络不接受一种热编码作为合适的输出。有谁知道这个错误的解决方法?
代码片段:
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras …Run Code Online (Sandbox Code Playgroud) 我是 TF/Keras/ML 的初学者,正在开发我的第一个非指导项目。这个想法是创建一个 RNN,它可以预测给定股票在给定日期的“变动”(我目前将其定义为开盘价高于/低于收盘价)。我的想法是训练 RNN 根据实际价格数据和一大堆技术指标来预测给定日期的价格变动。
我希望模型输出的内容如下所示。
然后,我尝试创建两个 TimeseriesGenerator 对象,其中缩放的原始数据作为数据传入,上面显示的理想输出作为目标传入。我希望该模型能够接收所有这些信息并输出一个类别,该类别将告诉我其预测的价格变动。此外,我希望该模型能够对未来的价格变动进行预测。

实际模型本身相当简单,几个 LSTM 层馈入密集层,最终输出层是一个神经元,我想用它来确定类别。
model = Sequential()
model.add(LSTM(2000,input_shape=(length,scaled_train.shape[1]), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(1000,input_shape=(length,scaled_train.shape[1]), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(500,input_shape=(length,scaled_train.shape[1])))
model.add(Dropout(0.2))
# model.add(Dense(1000))
model.add(Dense(250))
model.add(Dense(1))
model.compile(optimizer='adam',loss='binary_crossentropy')
Run Code Online (Sandbox Code Playgroud)
执行所有这些操作时遇到的错误是非描述性关键错误,该错误在模型上调用 fit_generator 时或尝试从生成器本身获取给定的输入/输出组合时发生。

我认为我对 TimeseriesGenerator 在幕后实际所做的事情存在误解。我的方法有什么问题?我该如何纠正它以实现我的目标?
目前我正在训练二元分类模型。我喜欢有两个概率(每个现有类一个)的想法,它们的总和为 1。因此,我在输出层中使用了 softmax,并且获得了非常高的准确度(高达 99.5%),同时损失也非常低0,007。在进行一些研究时,我发现二元交叉熵是训练二维分类问题时唯一真正的选择。
现在,当我想使用softmax时,我是否必须使用classification_crossentropy作为损失函数,我感到很困惑。您能帮助我了解二元分类问题中应该使用什么作为损失函数和激活函数以及为什么?
这是我的代码:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(10, input_dim=input_dim, activation='sigmoid'))
model.add(tf.keras.layers.Dense(10, activation='sigmoid'))
model.add(tf.keras.layers.Dense(2, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)